본문 바로가기
코딩 자산관리/Coding Test

[Good Bye, BOJ 2020!] A.끝말잇기

by 은행장 노씨 2021. 1. 3.

 '굿바이,BOJ2020!' 대회를 한다는 소식을 들었다. 친구와 함께 1학년을 마무리하는 마음으로 대회에 참여했다.

 

 

코딩에 ㅋ도 모르는 코린이였는데 1년 동안 열심히 배웠다.

학교에서도 프로그래밍을 배웠지만 특히 백준 문제들을 풀면서 다양한 문제 유형과 풀이법을 익혔다.  

백준 20 문제집을 보면서 하루종일 끙끙 머리는 싸매는 경험들이 나에게 큰 도움이 됐다.

옆에서 든든하게 알려주고, 문제를 추천해주고, 디버깅해주면서 오류를 고민해주는 친구 덕에 더 열심히 했던 것 같다.  

 

교내 대회는 두 번 정도 나갔는데, 교외 대회는 처음이어서 떨렸다.

세상에 코딩 잘하는 사람이 널려 있기 때문에 문제가 얼마나 어려울 지 무섭기도 했다.

 

https://www.acmicpc.net/problem/20528

20528번: 끝말잇기

욱제는 준원이랑 끝말잇기를 하고 있다. 준원이가 시작하자마자 '스트론튬'을 외쳐서 욱제는 피가 거꾸로 솟았다~ 솟으면 백두산~ 백두산은 높아~ 높으면 비행기~ 비행기는 빨라~ 빠르면 기차~

www.acmicpc.net

 

 

 

 

 팰린드롬 문자열을 사용할 때 끝말잇기 가능 여부에 따라서 0 또는 -1을 출력한다.

처음에 문제를 봤을 때 받은 단어를 다 pop해서 조건문을 통해 끝말잇기가 가능한 지 확인하려고 했다. 

팰린드롬 문자열 끝말잇기는 늘 똑같은 문자로 시작하고 끝난다.

 이것을 친구가 알려줬다. '문자들을 다 비교할 필요 없다.'는 것을 알고 파이썬 Counter를 이용해 문제를 풀었다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
from collections import Counter
 
num = int(input())
 
str = list(map(str, input().split()))
strList = []
for i in str:
    strList.append(i[0])
    strList.append(i[-1])
 
if Counter(strList).most_common(1)[0][1== num * 2:
    print(1)
else:
    print(0)

 Counter는 여러모로 쓸모있는 친구다. 대회 시작 전에 그의 존재를 꼭 기억하고 대회에 임해야겠다.

 

후에 내 소스를 보니 뱃지 교환권이 있었다! 야호!

 

 

뱃지가 있으니까 기분이 좋았다. 진짜 좋았다!
앞으로 백준 티어 볼 때마다 동기부여 될 듯₊◟(⌯ˇ- ˇ⌯)◜‧*・

내년에도 이런 대회가 있으면 참여해야겠다. 방학에는 백준 공부를 더 열심히 해서 골드가 되는 것이 목표다.