https://www.acmicpc.net/problem/10989 수의 개수의 범위가 10,000,000까지 이므로 단순히 배열에 저장하여 sort를 하게 되면 메모리 초과가 뜬다. 그래서 다른 방법으로 10,000보다 같거나 작은 자연수로 이루어져 있다는 조건에 따라 배열을 10,000만큼 할당해두고 해당하는 자리에 1씩 증가하였다. 그러면 저절로 인덱스를 따라 오름차순으로 정렬이 의도치않게 될것이고 출력도 인덱스를 출력하면된다. 코드↓ https://github.com/ziwonii24/Algorithm/blob/master/Baekjoon/10989.cpp
1~99까지는 등차수열이기 때문에 개수를 1씩 증가해주고 100~1000은 자리수 별로 비교하여 증가하여야 한다. 먼저, string으로 변환하여 미리 diff에 맨앞 두 자리수의 차이(sn[1]-sn[0])를 구해놓은다음, 그 다음 자리수의 차이(sn[i+1]-sn[i])가 diff와 같으면 cnt를 증가시켜주었다. 1000을 입력했을 때 답은 144가 나와야한다. 코드 ↓ https://github.com/ziwonii24/Algorithm/blob/master/Baekjoon/1065.cpp
댓글
댓글 쓰기