백준-1157번 단어 공부 [Python3]

김태경·2023년 1월 18일
0

코딩테스트

목록 보기
4/12

오랜만에 오답노트를 작성하려고 해요!! 두가지 방법으로 풀어보았는데 첫번째 방법은 왜인지 ... 주피터 노트북에서는 잘 실행 되는데 제출하면 Indexerrorr가 떠서 해결하지 못하고 다른 방법으로 풀어보았답니다!

문제는 다음과 같습니다 !

일단 해결하지 못한 첫번째 방법은 !!

바로 이 코드랍니다.

먼저 단어를 입력 받은 후에 모두 대문자로 바꿔주었습니다.
그 후 for문은 문자별로 몇개씩 입력 받았는지 딕셔너리 형태로 저장해주는 코드입니다.


Mississipi를 입력 하였을 때 d라는 변수는 위와 같은 형태입니다.

sorted 함수를 이용하여 오름차순으로 정렬해줍니다. 이때 reverse=True는 내림차순을 위한 파라미터입니다.


그럼 sor 변수는 위와 같은 형태로 저장됩니다.

여기까지했다면 마무리 단계입니다!

if문으로 원하는 값을 출력할건데요. 가장 많이 사용된 알파벳이 두개 이상 존재하는 경우를 위해 sor[0][1]과 sor[1][1]이 같으면 '?'를 출력하도록 하였고, 그 외의 경우에는 가장 가장 많이 사용된 알파벳을 출력하도록 코드를 작성하였습니다.

이미 sor 변수가 내림차순으로 정렬되어 있으므로 sor[0][1]과 sor[1][1]이 같다면 가장 많이 사용된 알파벳이 두개 이상 존재하기 때문이죠 !!!!!

하지만 이 방법은 알 수 없는 이유로 주피터에서는 출력되지만 백준 환경에서는 indexerror가 뜹니다 ㅠㅠ 질문 게시판에 질문을 올려둔 상태에요 !!

두번째 방법입니다!

먼저 똑같이 단어를 입력 받고 모두 대문자로 바꿔줍니다.

그 다음 리스트 형태로 알파벳을 저장해줍니다 . 이때 중복된 문자 없이
Mississipi를 입력 받으면 ['S','M','P','I'] 형태로 저장됩니다.

그 다음 count 함수를 이용하여 입력받은 단어에 alp에 저장된 각각의 문자들이 몇개씩 들어있는지의 과정을 거쳐 cnt_words에 각각의 값들을 저장해줍니다.

이후에 if~else문을 이용하여 첫번째 방법과 같은 과정을 거칩니다.

그럼 끝 ~~ 저는 다시 첫번째 방법을 해결하러 가겠습니당 !

profile
신입 ^3^

0개의 댓글