구름톤 챌린지 이진수 정렬

[느낀점]

 

처음 이 문제를 봤을 땐 꽤 어렵다고 생각했다. 일단 내가 원래 가지고 있던 지식으로는 절대 풀수없다고 판단해 여러가지 검색해가며 풀고있었다.

처음에 풀었을 때의 코드이다. 풀면서도 내가 뭘 하고있는지 점점 수렁으로 빠져들어갔다. 문자열로 입력을 받아서 그걸 다시 정수배열로 변환하고 정렬하고, 오름차순 정렬이기 때문에 for문으로 요소 끝에서부터 불러들여 Integer.toBinaryString 이라는 정수를 2진수 문자열로 변환하는 함수를 써서 문자열배열 a에 담았다. 사실 이렇게 할거면 배열에 담을 필요도 없었다. 아무튼 원래 문자열의 길이에서 그 문자열에 있는 1을 공백으로 치환한 문자열의 길이를 빼서 count 정수 에 담은 후 map 을 이용해 입력한 정수, 1의 갯수를 내림차순으로 정렬한 것이다. 그렇게 한것을 list에 다시 담아서 value를 기준으로 내림차순해 K-1번 요소를 출력한다. 지금보면 도대체 뭘 하고싶은건지 모르겠지만 신기하게도 테스트케이스는 통과가 된다.

하지만 제출을 해보면 거의다 오답이 나온다. 그래서 힘들어서 다음날 풀기로 하고 일단 저장 후 다음날 봤다.

놀랍게도 다음 날 나는 노느라 풀지 않았고 구름톤 챌린지 블록을 받을 수 있는 기준인 48시간이 지나 블록을 못얻었다. 그리고 오늘 일요일이 되어 다시 풀어 보기위해 다른 사람들이 푼 해답, 챗GPT 등 고민해가며 겨우겨우 풀었다. 어떤 멋진분의 블로그를 참고해가며 풀었는데 많은것을 느꼈다.

참고한 블로그를 보며 BufferedWriter 도 써봐야겠다는 것을 느꼇고, bw.flush();bw.close(); br.close(); 등도 써봐야하고, 입력받을 때 StringTokenizer 도 써봐야겠다는 것을 느꼈다. 어려워서 항상 피하고 있었는데 써봐야 는다는것을 알았다. 글 구성도 좀 더 가독성 있게 써야할것같다. 그와중에 Collections 는 내일보면 어떻게 사용해야하는지 까먹을것같다. 좀더 노력해야겠다.

 

그렇게해서 나온 풀이이다.

 

[결과 코드]

+ Recent posts