1) 생각 숫자 N을 주어준 후 1부터 N까지 숫자를 쭉 이었을 경우 그 숫자의 자리수를 구하라.1) 첫번째 생각시간이 1초로 주어졌고 N의 범위가 1부터 1억 까지이므로 될까? 싶어서 반복문을 통해 1부터 N까지 돌리면서 그 숫자의 길이를 구해 계속 더해주었다. 약간 느리고 메모리를 많이 잡아먹었지만 '맞았습니다'가 표시되었다. 아마 위의 방법으로는 숫자가 좀 더 크게 주어지면 '틀렸습니다'가 표시될 것이므로 다른 방법을 생각해보았다.2) 방안더 좋은 방법이 무엇일까? 처음 N이 100으로 주어지면 1~99 까지는 무조건 포함이 된다. 여기에 다음과 같은 규칙이 들어간다.1~9는 9개10~99는 90개100~999는 900개... 뒤에는 계산해 보지 않았지만 계속 저렇게 늘어날 것이 분명하다. 자연에는..
1) 생각 문제는 아주 심플하다 1) 첫번째 생각M,N 값에 대응하는 값을 1부터 쭉 올리면서 M,N에 도달하면 없는것으로 판단하여 -1을 출력하였다.위의 시도는 바로 '시간초과'를 받았고 다른 생각을 해보아야했다. 2) 두번째 생각M값을 고정시키고 N을 +M만큼 해준 후 차이를 N 범위를 넘어서게되면 -N을 해주어 처리를 하였다.처음 M 값을 고정했을 때의 N에 대응하는 값을 가지고 새롭게 변한 tN 값과 비교를 해주면서 tN값이 다시 처음의 N 값으로 돌아왔다면 한 바퀴를 돌았다는 것이므로 대응하는 숫자가 없다고 판단하고 '-1'을 출력하였다.=> 이경우 -N으로 처리하였는데 '틀렸습니다'가 아닌 '시간초과'를 받았기에 잘못된 부분을 발견하는데 조금 걸렸다.M이 클경우 tN값에 +M을 해주어 N이 넘..
1) 생각 무슨말일까 했는데 아래와 같은 블록의 형태를 의미한다. 다른 블록의 형태의 경우에는 탐색을 통해 만들 수 있지만 'ㅜ' 형태의 모양은 만들기 어렵다.딱, 저형태만 되는것은 아니고 저 도형이 회전한 모양이면 어느 모양이던 가능하다.처음 Stack으로 DFS를 구현해보고 재귀를 통해서도 구현해 본결과 Stack으로 구현할 경우 '맞았습니다'는 뜨지만 반복작업이 많아지므로 메모리와 실행시간이 다음과 같이 차이가 나게된다.그리고 이 문제처럼 입력이 띄엄띄엄 많이 주어진 경우 Scanner와 BufferedReader의 능력 차이를 쉽게 알아볼 수 있으므로 같은 코드에서 문자열 입력을 다르게 했을 때 생기는 차이는 다음과 같다.(Scanner는 1024chars의 버퍼 사이즈를 BufferedReade..
- Total
- Today
- Yesterday