서론
오늘부터 차근차근 백준 문제를 풀어보고자 한다. 오늘 풀어볼 문제는 백준 1316이다. 이 문제는 실버 5에 해당하고 정답률은 현재 기준 58.855%다. 리스트를 사용한 문제로 리스트 관련 포스팅은 여기로 가면 되며, 문제를 직접 보고 싶다면 여기로 가면 된다. 백준 링크를 걸어 놓았다. 이번 포스팅에서는 어떻게 접근했고, 코드는 어떻게 했는지 적을 예정이다.
백준 1316 풀이과정
연속해서 나타나는 경우에서 연속의 정의가 애매해서 처음에 뭐지 싶었는데 여기서 연속이라함은 a,b,c와 같은 알파벳의 연속이 아니라(하지만 이 역시 문제로 충분히 나올법하다.) 기존에 사용된 알파벳이 있는지에 대한 연속 여부다. 그래서 abd인 경우는 연속, aaza는 불연속이다. 아무튼 난 이 문제를 보고 크게 세가지 단계를 생각했다. 1. 단어를 받고 2. 받을때마다 vis를 초기화해준다. vis는 기존에 있었는지 체크하는 놈 이다. 새로운 단어를 받을 때 마다 얘를 초기화해주는 건 당연하다. 3. 1.에서 받은 단어를 for 문을 돌아가면서 vis에 이미 있는 글자이면서(and) 마지막 vis에 들어가 있는 놈이면 for문을 멈춘다. 그렇지 않다면(else) vis에 넣는다. 4. 3.에 해당하는 for문을 다 돌았을 때 vis의 길이가 tmp의 길이가 같다면 res에 1을추가한다. 1~4 과정을 for문을 통해 n번 반복한다.
boj1316 코드
n = int(input())
res = 0
for _ in range(n):
vis = []
tmp = list(input())
for i in tmp :
if i in vis and vis[-1] != i:
break
else:
vis.append(i)
if len(vis) == len(tmp):
res += 1
print(res)
'IT, Computer' 카테고리의 다른 글
[백준] BOJ1463, 1로 만들기 (0) | 2025.02.05 |
---|---|
[백준] BOJ2566, 최댓값 (0) | 2025.01.14 |
리스트 컴프리헨션 List Comprehension (0) | 2025.01.10 |
Retrieval Augmented Generation(RAG) 복습 (6) 사전을 사용해서 질문 바꾸기 (2) | 2024.12.05 |
카멜 포터블 휴대용 모니터 프리즘 CPM1610IQ 구매기 (2) (3) | 2024.12.01 |