[BOJ] [python] 2941: 크로아티아 알파벳

2024. 12. 23. 01:40·코딩 테스트 & 문제 해결/코딩 테스트 연습
목차
  1. 코드1
  2. 코드2

코드1

오류1: 문자열은 Python에서 불변 객체(immutable)

croba=['c=','c-','dz=','d-','lj','nj','s=','z=']
word=input()
answer=0
for x in croba:
if str(x) in word:
word.replace(str(x),'')
answer+=1
print(word)
print(answer)

 

ljes=njak
3

 

croba=['c=','c-','dz=','d-','lj','nj','s=','z=']
word=input()
answer=0
for x in croba:
if str(x) in word:
print(str(x))
new_word=word.replace(str(x),'')
answer+=1
print(new_word)
print(answer)
lj
nj
s=
ljenjak
3

 

croba=['c=','c-','dz=','d-','lj','nj','s=','z=']
word=input()
new_word=word
answer=0
for x in croba:
if str(x) in word:
new_word=new_word.replace(str(x),'')
answer+=1
answer+=len(new_word)
print(answer)

 

예제 문제를 모두 통과하나 싶었지만 틀린 출력을 발견하였다.

 

오류2: 같은 문자 중복찾기 불가

 

입력 문자열에서 리스트 안에 있는 타겟단어만 찾다보니까 예제 입력4같은 상황에서 'c=' 하나만 더하는 에러가 발생하였다.

croba=['c=','c-','dz=','d-','lj','nj','s=','z=']
word=input()
new_word=word
answer=0
for _ in range(len(word)):
for target in croba:
if str(target) in new_word:
length = len(str(target))
word_list=list(new_word)
for i in range(length):
word_list[i]=''
answer+=1
new_word=''.join(word_list).strip()
answer+=len(new_word)
print(answer)

croba 리스트에 있는 타겟 문자열을 찾으면 제거하는 플로우로 코딩해서 예제 문제는 모두 맞췄지만 틀렸다

이런상황이 진짜 에러 찾기 힘든 것 같다.

 

dz=dz=
output: 3 (dz=, d, z=)
answer: 2 (dz=, dz=)

질문게시판을 뒤지다가 반례를 찾았다.

너무 비효율적인 코드라고는 생각했는데 dz=과 z=를 제대로 찾으려면 검사하는 크로바티아 알파벳의 범위를 하나씩 늘려가며 찾아야겠다.

croba=['c=','c-','dz=','d-','lj','nj','s=','z=']
croba_2=[]
croba_3=[]
for croba_alpha in croba:
if len(croba_alpha)==2:
croba_2.append(croba_alpha)
if len(croba_alpha)==3:
croba_3.append(croba_alpha)
word=input()
new_word=word
answer=0
for _ in range(len(new_word)):
for x in croba_3:
if str(x) in new_word:
length = len(str(x))
word_list=list(new_word)
for i in range(length):
word_list[i]=''
answer+=1
# print(word_list)
new_word=''.join(word_list).strip()
# new_word=str(new_word)
# print("new_word: ",new_word,"x: ",x)
# print("answer: ",answer)
for _ in range(len(new_word)):
for y in croba_2:
if str(y) in new_word:
length = len(str(y))
word_list=list(new_word)
for i in range(length):
word_list[i]=''
answer+=1
new_word=''.join(word_list).strip()
# print("newword: ",new_word,"y: ",y)
# print(new_word)
answer+=len(new_word)
print("answer:", answer)

여기까지 가다가.. 도저히 안될거같아서 코드 갈아엎기 start ㅠㅠㅜ

 

 


코드2

croba = ['c=', 'c-', 'z=', 'd-', 'lj', 'nj', 's=', 'dz=']
word = input()
answer = 0
i = 0
while i<len(word):
flag=0
for alpha in croba:
if word[i:i+len(alpha)]==alpha:
answer+=1
flag=1
i+=len(alpha)
break
if flag==0:
answer+=1
i+=1
print(answer)

 

결국 완전히 다른 방향으로 접근해서 풀었다.

저 코드에서도 break없이는 시간초과가 뜨는 걸 보니 어차피 원래 접근방식으로는 못 풀었을 것 같다

보다 효율적인 코드를 작성하는 법, 문자열에서 인덱스를 다루는 법을 더 공부해야겠다

 

'코딩 테스트 & 문제 해결 > 코딩 테스트 연습' 카테고리의 다른 글

[BOJ] [python] 14888: 연산자 끼워넣기  (1) 2025.01.03
[준랩] [python] 1082: 특정 대문자를 소문자로 바꾸기  (3) 2024.12.24
Programmers -코딩테스트 연습>코딩 기초 트레이닝>수 조작하기 1  (1) 2024.02.10
Programmers -코딩테스트 연습>코딩 기초 트레이닝>조건 문자열  (2) 2024.02.05
programmers -코딩테스트 연습>코딩 기초 트레이닝  (1) 2024.01.27
  1. 코드1
  2. 코드2
'코딩 테스트 & 문제 해결/코딩 테스트 연습' 카테고리의 다른 글
  • [BOJ] [python] 14888: 연산자 끼워넣기
  • [준랩] [python] 1082: 특정 대문자를 소문자로 바꾸기
  • Programmers -코딩테스트 연습>코딩 기초 트레이닝>수 조작하기 1
  • Programmers -코딩테스트 연습>코딩 기초 트레이닝>조건 문자열
JYUN_
JYUN_
예비 개발자 성장기록
  • JYUN_
    데브 스토리
    JYUN_
  • 전체
    오늘
    어제
    • 분류 전체보기 (87)
      • AWS & 클라우드 컴퓨팅 (2)
        • AWS (2)
      • AI & ML (17)
        • 딥러닝 (3)
        • 인공지능 기초 (2)
        • 자연어 처리 (3)
        • 컴퓨터 비전 (8)
      • CS 지식 (9)
        • 알고리즘 (1)
        • 자료구조 (4)
        • 지식확장 (1)
        • 컴퓨터 네트워크 (3)
      • 백엔드 (22)
        • Node.js (12)
        • Spring (9)
      • 웹 프론트엔드 (21)
        • HTML (3)
        • React (7)
        • 바닐라 JavaSctipt (11)
      • 코딩 테스트 & 문제 해결 (10)
        • 코딩 테스트 연습 (9)
        • 실전 문제 풀이 (1)
      • 트러블 슈팅 (1)
      • 기타 (4)
        • 개인 지식 관리 (1)
        • 외부 활동 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
JYUN_
[BOJ] [python] 2941: 크로아티아 알파벳
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.