mondegreen

[240210] 알고리즘 리부트 2일차 - 백준 1919, 1157 자바 본문

알고리즘 풀이 및 리뷰/[패캠] 핵심유형 20개로 한 번에 끝내는 알고리즘 코딩테스트 리뷰

[240210] 알고리즘 리부트 2일차 - 백준 1919, 1157 자바

앙갱 2024. 2. 10. 16:45
반응형

[Part1-Chapter-01-Clip03]

- 백준 1919 자바

 

 

 

 

처음에는 카운팅 배열을 생각하지 못하고 정렬을 한 후 각각의 char 값을 비교하면서 조건문에 따라 투포인터 방식으로 배열의 인덱스를 바꿔가며 답을 구했다. 관련 코드는 왼쪽 아래와 같다. 런타임 에러가 났던 이유는 인덱스가 배열의 크기를 넘어가지 않도록 while 문 조건에 넣었어야 했는데 꼼꼼하게 조건을 걸지 못했다.

 

망할... 두번째 방식은 강의를 듣고 아차라는 생각과 함께 곧바로 구현한 방식이다. 바로 카운팅 배열을 활용해 각 문자열에 소문자가 몇개씩 존재하는지 확인하고 차이 만큼 답에 더해주어 도출하는 방식이다. 자료구조나 매서드 모를 때는 제일 먼저 활용하려 했던 것이 카운팅 배열이었는데 이것저것 많이 알게 되면서 오히려 활용하지 못했다. 정말 여러 구조나 이론을 손으로 한번씩 정리를 해보는 게 좋겠다는 생각이 든다.

 

 

[Part1-Chapter-01-Clip04]

- 백준 1157 자바

 

 

 

왼쪽 아래코드는 아스키 코드를 기준으로 대소문자를 구분하여 카운팅 배열을 만든 것이고 다른 방법으로는 애초에 출력해야 하는 단어가 대문자임에 따라 uppercase 메서드를 활용해서 대문자로 시작하면 된다. 이 방법이 수개월전 푼 방법. 문제를 제대로 읽지 않아 발생한 문제이다. 대문자로 출력해야 한다는 점을 놓쳤기 때문... 

 

첫 풀이에서 틀린 이유는 최대값이 지속적으로 갱신되기도 전에 중복되는 빈도가 발생할 경우 break로 반복문을 중지하고 최대값으로 도출했기 때문이다. 여러 테스트 케이스를 넣어보며 출력문으로 값이 잘 도출되는지 습관을 들여야겠다.

 

오른쪽 풀이는 불필요한 변수 선언을 없애고 else if문으로 '?' 조건까지 처리하는 코드이다.

 

반응형