본문 바로가기
Learning-log/Algorithm 문풀

백준(파이썬, python) - 2941번 (2022.10.31)

by why제곱 2022. 10. 31.

1. 2941번

 

1) 문제

 

2) 풀이

3) 문법 및 풀이과정

엄청난 시행착오와 착오와 착오를 거듭해 최종적으로 맞은 문제였다. 사이트의 테스트케이스 예제가 정말 잘 나와있다는 생각이 들었다. 한 테스트 케이스에서 답이 틀려서 그거에 초점을 두고 코드를 수정하면 다른 테스트 케이스에서 문제가 생기는 많은 착오 끝에 최종적으로 코드를 완성했다. 정말 뿌듯하고 이 문제 맞았을 때 행복했다 ..

 

(1) 주어진 크로아티아 알파벳을 list에 넣는다.

(2) 문자열을 입력받는다.

(3) 최종적으로 알파벳 개수를 세기 위해 필요할 len(word)를 정의한다.(이 부분은 문제를 풀다 필요해져서 앞에 입력한 것이다. 미리 부가 설명을 하자면 이 때 변수로 설정해 놓지 않으면 나중에 word라는 입력값이 for문 내에서 변화하여 len(word)를 했을 때 처음 입력값의 길이를 계산할 수가 없다.)

(4) croatia 리스트 내에 있는 알파벳 개수를 세기 위한 cnt 변수를 0으로 정의한다.

(5) croatia 리스트 내에 있는 알파벳을 제외하고 일반 알파벳의 개수를 세기 위해 사용할 len_alph를 0으로 정의한다.

(6) for문을 활용해 croatia list의 각 알파벳이 입력값인 word에 몇개 있는지 count함수를 통해 0이 아닐 경우 cnt에 그 수가 더해지도록 한다.

(7) len_alph에 그 크로아티아 알파벳 길이와 입력값에 그 알파벳이 나온 횟수(word.count(i))를 곱하여 더한다. 그런 후 word에 있는 크로아티아 알파벳을 " "(공백)으로 대체한다. 

+ 이 때, 알파벳이 아예 제거되지 않도록 반드시 큰 따옴표 내에 띄어쓰기를 해줘야 한다. 만약 띄어쓰기를 안해서 아예 word 내에 그 크로아티아 알파벳이 제거되고 앞 뒤에 붙은 알파벳들이 공백 없이 붙게 되었을 때, 그 붙은 알파벳들이 우연찮게 다시 크로아티아 알파벳을 이루는 경우, 최종 알파벳 개수에 영향을 줄 수 있다.

 

(8) 최종적으로 cnt(크로아티아 알파벳의 개수) + (입력값의 길이) - (크로아티아 알파벳의 총길이) 를 출력한다.

+ 이 때  입력값의 길이는 len(word)가 아닌 앞서 미리 정의해둔 total을 사용하여야 한다.(for문 내에서 replace를 사용하여 word의 길이가 바뀌었기 때문)

+ (입력값의 길이 - 크로아티아 알파벳의 총길이)는 곧 문자열에서 크로아티아 알파벳을 제외하고 남은 일반 알파벳의 개수를 의미한다.

 


문제 풀자마자 바로바로 블로그 쓰자고 생각하지만 막상 문제를 풀면 재미가 들려 다음 문제를 풀고 싶은 마음에 덮어놓고 문제를 풀다 보니,,, 아직 쓰지 못한 백준 문제풀이 글이 가득이다 ㅠㅠ .. 

그래도 이번 글을 쓰면서 문제 푼지 얼마 안됐을 때 글을 쓰면 풀이가 더 자세하고 내가 겪었던 어려움에 대해 더 자세히 기록할 수 있다는 걸 느꼈다 ! 결론. 블로그 꾸준히 쓰자.