250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 아이엠어바텐더
- 설계
- List Comprehension
- Django
- python
- 파이썬 몫
- YOLOv5
- 슬라이싱
- html
- 단어 공부
- date_format
- count
- sql
- 프로그래머스
- 데이터
- pcce 기출문제
- 파이썬 슬라이싱
- ORDER BY
- Join
- Len
- map
- where
- SQL 고득점 Kit
- 코딩테스트 연습
- 파이썬
- css
- GIT
- Python3
- 백준
- 프로젝트
Archives
- Today
- Total
nan + nan = 2nan
[백준][Python3] #1316. 그룹 단어 체커 본문
728x90
코드 입력
test_case = int(input())
cnt = 0
for _ in range(1, test_case+1):
test_ = input()
val_word = []
before_alphabet = ''
while True:
if len(test_) >= 2:
if test_[0] not in val_word:
val_word.append(test_[0])
before_alphabet = test_[0]
test_ = test_[1:]
elif test_[0] not in val_word:
val_word.append(test_[0])
before_alphabet = test_[0]
test_ = test_[1:]
elif test_[0] in val_word and before_alphabet == test_[0]:
test_ = test_[1:]
elif test_[0] in val_word and before_alphabet != test_[0]:
break
elif len(test_) == 1:
if val_word == [] and before_alphabet == '':
cnt += 1
break
elif test_ not in val_word:
cnt += 1
break
elif test_ in val_word and before_alphabet == test_:
cnt += 1
break
elif test_ in val_word and before_alphabet != test_:
break
print(cnt)
예외 처리하는 문제의 싸움이었다.
내가 푼 로직보다 더 깔끔하고 간단하게 풀 수 있을지도 모르겠다.
다만, 내가 생각했을 땐 가장 중요한건
1) 이전에 등장한 알파벳이 다시 등장하면 안되고,
2) 등장하더라도 바로 이전 알파벳과 같다면 괜찮다였다.
등장한 알파벳의 경우, 리스트에 추가하고 넘어가기. 만약 이미 리스트에 있고 이전 알파벳과 같다면 넘어가고,
아니라면 break로 탈출.
글자 수가 0이 될 때까지 단순 break 조건에 걸리지 않는다면 cnt에 1 추가한 후 break하는 로직이다.
if문과의 싸움이었는데, 더 쉽게 풀 수 있는 로직이 있다면 좋을 것 같다.
개인적으로 코드가 깔끔한게 더 좋아서..
출처 : 백준 Online Judge
https://www.acmicpc.net/problem/1316
'Python > 백준 알고리즘' 카테고리의 다른 글
[백준][Python3] #2292. 벌집 (0) | 2023.01.16 |
---|---|
[백준][Python3] #1712. 손익분기점 (0) | 2023.01.16 |
[백준][Python3] #2941. 크로아티아 알파벳 (0) | 2023.01.16 |
[백준][Python3] #5622. 다이얼 (0) | 2023.01.15 |
[백준][Python3] #2908. 상수 (0) | 2023.01.15 |
Comments