본문 바로가기

코딩테스트166

[ 파이썬(python) ] 백준 11586 - 지영 공주님의 마법 거울 📍 백준 11586 - 지영 공주님의 마법 거울 백준 11586 - 지영 공주님의 마법 거울 ⚡️ 나의 풀이 2차원 행렬을 좌우, 상하 반전을 할 수 있느냐 없느냐를 묻는 문제였다. 나는 함수를 선언해서 하나하나씩 출력하는 방법을 사용했다. 이번에는 출력에 sys.stdout을 사용했는데, 저번에 유성 문제를 푼 이후에 2차원 행렬의 문자열을 print()할 때는 뭔가 써야 할 것 같은 느낌이었다. 그러나 최대 입력이 10,000이어서 사용하지 않아도 됐었다. 다음번에 문제 풀 때는 입력 범위를 잘 보고 최대 10,000,000까지면 sys.stdout을 사용해봐야지 정답판정을 받고 다른 사람의 코드를 보니까 *(Asterisk, unpacking)을 사용해서 코드를 상당히 간결하게 구현했다. 머릿속에 .. 2021. 6. 4.
[ 파이썬(python) ] 백준 2615 - 오목 📍 백준 2615 - 오목 백준 2615 - 오목 ⚡️ 나의 풀이 IndexError와 단락연산자의 중요성을 매우 매우 잘 배운 문제였다..(그만큼 많이 시도했다..) 까먹지 않게 정답 판정을 받고 바로 글을 작성하는 중이다. 제일 어려웠던 부분은 IndexError(범위설정), 육목판정 이고 가장 왼쪽에 있는 바둑알 찾기였다. 지금 작성하는 코드가 어떤 기능인지 정확히 분석했어야 했는데 미흡해서 아쉬웠다. 큰 흐름은 다음과 같다. 19 * 19 입력을 받는다. 바둑알이 있는 값(arr[x][y]:)을 확인한다. 하, 우하, 우, 우상 순서로 탐색한다. 현재 값과 다음 값이 연속으로 있는지 while문으로 확인한다. 육목 판단(하단 참고)을 진행한다. 육목 판단의 조건을 지났는데도 cnt == 5면 오목.. 2021. 6. 3.
[ 파이썬(python) ] 백준 2902 - KMP는 왜 KMP일까? 📍 백준 2902 - KMP는 왜 KMP일까? 백준 2902 - KMP는 왜 KMP일까? ⚡️ 나의 풀이 이름의 첫 번째 글자, 하이픈 뒤는 항상 대문자기 때문에 대문자로 따로 바꿔주는 코드가 필요 없다. 하이픈을 기준으로 입력을 나눈다. names를 반복문을 돌려 i[0]만 출력한다. 사람의 성의 첫 글자만 따서 부르기 때문이다. import sys input = sys.stdin.readline names = input().split('-') for i in names: print(i[0], end='') 2021. 6. 2.
[ 파이썬(python) ] 백준 20436 - ZOAC 3 📍 백준 20436 - ZOAC 3 백준 20436 - ZOAC 3 ⚡️ 나의 풀이 없는 것을 짜낼려니까(?) 조금 힘들었던 문제였다. 처음에 2차원 리스트로 문자 하나하나씩 끊어서 keyboard = [['q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'], ['a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l'], ['z', 'x', 'c', 'v', 'b', 'n', 'm']]로 선언했는데, 이것보다 하단에 있는 코드처럼 하나의 리스트로 감싸고 문자열에 'str'처리를 해주면 결과는 동일하지만 코드는 더욱 간결해지는 모습을 볼 수 있다. 이 문제에서 핵심적으로 판단해야 하는 부분은 다음과 같다. 1. 문자를 키보드의 좌표로 변환한다. - .. 2021. 6. 1.
[ 파이썬(python) ] 백준 1244 - 스위치 켜고 끄기 📍 백준 1244 - 스위치 켜고 끄기 백준 1244 - 스위치 켜고 끄기 ⚡️ 나의 풀이 문제가 조금 길었지만, 핵심 포인트는 다음과 같다. 남학생: 자기가 받은 수의 배수인 스위치 번호의 상태를 바꾼다. 여학생: 자기가 받은 수와 같은 번호인 스위치 번호를 중심으로 좌우가 대칭이면서 가장 많은 스위치를 포함하는 구간의 상태를 모두 변경한다. 그리고 처음에 index를 편하게 보기 위해 arr[0]에 이 문제와 관련 없는 값인 -3333을 넣었다. 남학생의 경우는 index가 배수인 경우를 찾을 때 if not i % target과 같은 방법을 사용했는데 그럴 필요 없이 시작점을 target으로 하여 for i in range(target, n+1, target)을 선언하면 배수의 index만 출력 할.. 2021. 5. 31.