본문 바로가기

CS/알고리즘

[백준] 2941번 : 크로아티아 알파벳

문제

 

[문제 출처] :  https://www.acmicpc.net/problem/2941

풀이 방법

 

문제를 보고 생각난 방법은 먼저 변경된 크로아티아 알파벳들과 입력값을 각각 배열에 저장한 뒤,

strstr 함수와 for문을 이용하여, 입력값에 크로아티아 알파벳이 있다면 dz=를 제외한 나머지의 문자 개수는 2이므로 입력한 값의 문자 개수에서 1씩 빼는 것이었다.

 

그래서 다음 순서로 코딩을 하였다.

1) 크로아티아 알파벳 배열에 저장
2) 입력값 저장
3) 입력한 값의 개수 구하기
4) for문 이용하여 입력값에서 크로아티아 알파벳 검색
5) 있다면 개수 하나 줄이기

 

이때, dz=는 z=을 포함하므로 나머지 알파벳들처럼 1씩 빼주어도 상관이 없어 다음과 같이 코드를 짰다.

 

1차 코드

 

하지만 위의 코드는 예제 2와 4같이 입력한 값에 같은 크로아티아 알파벳이 2번 이상 존재하는 경우를 생각하지 못했고, 그래서 while 문을 이용하여 croatia 배열에 있는 문자열을 input에서 찾았다면, 찾은 문자열 다음 주소부터 또 검색해주는 코드로 수정하였다.

 

2차 코드

 

 

나중에 다시 보니 너무 예제에만 맞춰진 풀이였다. 그래서 input에 dz=가 있는 경우에 z=가 있는지 먼저 검사하고 있다면 1만 빼주고 없다면 2를 빼주도록 코드를 수정하였다.

 

최종 코드

'CS > 알고리즘' 카테고리의 다른 글

[DFS&BFS] 개념 정리 및 구현  (0) 2021.02.27
[백준] 10818번 : 최소, 최대  (0) 2020.01.15
[백준] 1110번 : 더하기 사이클  (0) 2019.12.30
[백준] 10828번 : 스택  (0) 2019.12.26
[백준] 10773번 : 제로  (0) 2019.12.26