본문 바로가기

문자열20

[ 파이썬(python) ] 백준 1076 - 저항 📍 백준 1076 - 저항 백준 1076 - 저항 ⚡️ 나의 풀이 저항 문제의 핵심은 첫 번째와 두 번째 색은 더해주고 마지막 색은 곱해주는 방법인데, 무작정 str형으로 바꿔 더해주는 방법만 생각했다. 그것보다 첫 번째 색에 10을 곱하고 두 번째 색은 그대로 더해주는 게 가독성이 더 좋았다. 그리고 10의 거듭제곱을 이용하면 쉽게 계산 할 수 있는데 규칙을 파악하지 못해 resisters[color][2]에 무작정 10의 거듭제곱을 넣었다. 다른 사람의 코드를 보니까 규칙의 중요성을 한번 더 느꼈다. # 나의 코드 colors = [input() for _ in range(3)] resisters = {'black': [0, 1], 'brown': [1, 10], 'red': [2, 100], 'or.. 2021. 6. 7.
[ 파이썬(python) ] 백준 11586 - 지영 공주님의 마법 거울 📍 백준 11586 - 지영 공주님의 마법 거울 백준 11586 - 지영 공주님의 마법 거울 ⚡️ 나의 풀이 2차원 행렬을 좌우, 상하 반전을 할 수 있느냐 없느냐를 묻는 문제였다. 나는 함수를 선언해서 하나하나씩 출력하는 방법을 사용했다. 이번에는 출력에 sys.stdout을 사용했는데, 저번에 유성 문제를 푼 이후에 2차원 행렬의 문자열을 print()할 때는 뭔가 써야 할 것 같은 느낌이었다. 그러나 최대 입력이 10,000이어서 사용하지 않아도 됐었다. 다음번에 문제 풀 때는 입력 범위를 잘 보고 최대 10,000,000까지면 sys.stdout을 사용해봐야지 정답판정을 받고 다른 사람의 코드를 보니까 *(Asterisk, unpacking)을 사용해서 코드를 상당히 간결하게 구현했다. 머릿속에 .. 2021. 6. 4.
[ 파이썬(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) ] 백준 1110 - 하얀 칸 📍 백준 1110 - 하얀 칸 백준 1110 - 하얀 칸 ⚡️ 나의 풀이 문제 중 번갈아가며 색칠 되어있다.라는 힌트에서 규칙을 찾을 수 있다. 저번에 풀었던 boj_1018 체스판 다시 칠하기에서 규칙을 볼 수 있다. 또, 이 문제를 풀고 boj_1018 체스판 다시 칠하기 문제를 풀어보는 것을 추천한다. 입력을 받는다. 8 * 8 배열에서 가장 왼쪽 위칸이 흰색이므로 짝수인 자리와 동시에 말(F)인 값을 찾는다. cnt를 누적시킨다. chess = [input() for _ in range(8)] cnt = 0 for i in range(8): for j in range(8): if not (i+j) % 2 and chess[i][j] == 'F': cnt += 1 print(cnt) 2021. 5. 28.