일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Bruteforce
- 정렬
- 매개변수 탐색
- Sort
- 백트래킹
- domain model
- 집합
- 반효경교수님
- dfs
- 재귀
- MySQL
- 해시맵
- 완전탐색
- git
- 프로그래머스
- 자료구조
- 스택
- 이분탐색
- 멘딕스
- 그래프
- Recursion
- SQL
- lcap
- 가중치없는그래프
- algorithm
- 자바
- Mendix
- 알고리즘
- microflow
- 트리
- Today
- Total
mondegreen
[240210] 알고리즘 리부트 2일차 - 백준 1919, 1157 자바 본문
[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문으로 '?' 조건까지 처리하는 코드이다.
'알고리즘 풀이 및 리뷰 > [패캠] 핵심유형 20개로 한 번에 끝내는 알고리즘 코딩테스트 리뷰' 카테고리의 다른 글
[240214] 알고리즘 리부트 6일차 - 백준 1236, 10431 자바 (0) | 2024.02.14 |
---|---|
[240213] 알고리즘 리부트 5일차 - 백준 10158 자바 (0) | 2024.02.13 |
[240212] 알고리즘 리부트 4일차 - 백준 13223 자바 (0) | 2024.02.12 |
[240211] 알고리즘 리부트 3일차 - 백준 1543 자바 (0) | 2024.02.11 |
[240209] 알고리즘 리부트 1일차 - 백준 2744 자바 (0) | 2024.02.09 |