728x90
📚문제
📝풀이
# 2941번 크로아티아 알파벳
cro_alphabet = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
word = input()
word_list = []
for i in cro_alphabet:
if i in word:
word_list.append(i)
for j in word_list:
word = word.replace(j,'')
word_without_cro = word
print(len(list(word_without_cro)) + len(word_list))
이렇게 풀면 답은 나오긴 하는데 중간에 예제 입력 4 에서
c=c= 같은 중복된 알파벳이나오면 word_list 에 'c='이 한 번만 저장된다. (for문에서 cro_alphabet을 1회만 도니까...)
그래서 구글링하여 어떻게 풀었는지 봤는데
cro_alphabet = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z=']
word = input()
for i in cro_alphabet :
word = word.replace(i, '*') # input 변수와 동일한 이름의 변수
print(len(word))
이렇게 간단한 방법이..............
생각해보니 어쨌든
크로아티아 알파벳을 문자열 1개('*')로 치환 dz=, z= -> *
나머지 알파벳은 그대로 두게되면 d
len(word)해서 문자열의 길이만 알면 되는거니까
(문제가 몇개의 크로아티아 알파벳을 사용했는지 물어보는것이므로)
📌막힌 부분
1. 내가 푼 코드
for j in word_list:
word = word.replace(j,'')
word_without_cro = word
이 부분에서 이렇게 지정하지 않고
for j in word_list:
word_without_cro = word.replace(j,'')
처음에는 이런식으로 지정해줬었다.
이렇게 되면 j가 word_list를 돌면서 word에서 마지막 j부분에 해당하는 부분만 수정되서 나온다
그러므로 위의 코드 처럼 for문에서 word를 완전히 바꿔준 후에 word_without_cro 변수에 할당해야한다.
아니면 word가 변경되지 않게 하고 싶다면
word_without_cro = word
for j in word_list:
word_without_cro = word_without_cro.replace(j,'')
print(len(list(word_without_cro)) + len(word_list))
이렇게 for 문 돌아가기전에 word_without_cro 변수에 미리 할당하는 방법도 있다.
for 문 풀때 이런 문제 잘 생각하자..!
728x90
'Python(알고리즘,문제풀이) > BOJ (Bronze V)' 카테고리의 다른 글
25206번 / 너의 평점은 (0) | 2023.07.04 |
---|---|
1316번 /그룹 단어 체커 (0) | 2023.07.03 |
1157번 / 단어공부 (0) | 2023.06.30 |
10988번 / 팰린드롬인지 확인하기 (0) | 2023.06.30 |
2444번 / 별찍기 -7 (0) | 2023.06.29 |