전체 글
![[백준] 1283. 단축키 지정](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FIptFs%2FbtrISPg2XBI%2FAAAAAAAAAAAAAAAAAAAAAJr5n-TyN-pzKldWZsCyJjsFG18_hFc_A-AzQy0Nsh4l%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DEbACyD6BOva%252BkT7erhrktZ6MGQQ%253D)
[백준] 1283. 단축키 지정
📌문제 1283번: 단축키 지정 첫째 줄에 옵션의 개수 N(1 ≤ N ≤ 30)이 주어진다. 둘째 줄부터 N+1번째 줄까지 각 줄에 옵션을 나타내는 문자열이 입력되는데 하나의 옵션은 5개 이하의 단어로 표현되며, 각 단어 역시 10개 이하 www.acmicpc.net 🎖️난이도 ✔️풀이 def find_shortcut(word_list): for idx, word in enumerate(word_list): if word[0].upper() not in short_cut: short_cut.add(str(word[0]).upper()) temp_word = list(word) temp_word.pop(0) text = "[" + word[0] + "]" + "".join(temp_word) word_li..
plt.imshow()에서 이미지 색상 다르게 출력되는 issue
원인 : OpenCV는 BGR로 사용하지만, Matplotlib는 RGB로 이미지를 보여주기 때문! 해결 : b,g,r에 split해서 담고, b와 r의 순서를 바꿔서 merge!
![[백준] 20436. ZOAC 3](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FCcCwK%2FbtrINuRtAZ2%2FAAAAAAAAAAAAAAAAAAAAAEDqNO28GW7TGY5GGcoSeOHqB8k7S3ZJTUiSBmItQ6iL%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DA88FTgOJubX4QL%252FfXVhW%252FdmKz6g%253D)
[백준] 20436. ZOAC 3
📌문제 20436번: ZOAC 3 첫 번째 줄에는 두 알파벳 소문자 sL, sR이 주어진다. sL, sR은 각각 왼손 검지손가락, 오른손 검지손가락의 처음 위치이다. 그 다음 줄에는 알파벳 소문자로 구성된 문자열이 주어진다. 문자열의 www.acmicpc.net 🎖️난이도 ✔️풀이 sl, sr = input().split() # z, o string = input() # zoac keyboard = ["qwertyuiop", "asdfghjkl", "zxcvbnm"] def getXY(s): for i in range(len(keyboard)): tmp = keyboard[i].find(s) if tmp == -1: continue x, y = i, tmp return [x, y] time = len(s..
![[백준] 14467. 소가 길을 건너간 이유](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2F7VKKa%2FbtrIO2UwRhy%2FAAAAAAAAAAAAAAAAAAAAAGYoHv3NhLh1hu501HSPY6QpQjS3WJQu7Xhc2Yry5s-i%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DBDM0HLVfOvdzK2Mi9rQzlOEYUIo%253D)
[백준] 14467. 소가 길을 건너간 이유
📌문제 14467번: 소가 길을 건너간 이유 1 3번 소는 위치 1, 0, 1에서 관찰되었으므로 길을 최소 두 번 건넜음을 확인할 수 있다. 4번 소도 길을 한 번 건넜으며, 나머지 소는 길을 건넌 기록이 확인되지 않는다. www.acmicpc.net 🎖️난이도 ✔️풀이 # sol1 from collections import defaultdict n = int(input()) cows = defaultdict(list) for _ in range(n): key, value = map(int, input().split()) cows[key].append(value) cnt = 0 for key in cows: tmp_list = cows[key] if len(tmp_list) == 1: continue f..
![[백준] 12933. 오리](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FcFaJEL%2FbtrIOwg56zy%2FAAAAAAAAAAAAAAAAAAAAAOF8aqrCKg8jODuH2xbDGt8ogaMC3wC4y2w3BeSxZR-T%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DYiEi9hqUD5VAi3fHjV7QwOEy8E0%253D)
[백준] 12933. 오리
📌문제 12933번: 오리 첫째 줄에 영선이가 녹음한 소리가 주어진다. 소리의 길이는 5보다 크거나 같고, 2500보다 작거나 같은 자연수이고, 'q','u','a','c','k'로만 이루어져 있다. www.acmicpc.net 🎖️난이도 ✔️풀이 sound = input() def func(sound): duck_list = [] quack_dict = {'q' : 0, 'u' : 1, 'a' : 2, 'c' : 3, 'k' : 4} # 현재 위치 체크용 recycle_cnt = 0 # 재사용 가능한 오리 몇 마리 있는지 체크 if sound[0] != 'q': return -1 else: duck_list.append('q') for now in sound[1:]: # 1. 현재 문자가 'q'인 경우..
![[백준] 20918. 전구](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fmd3Sw%2FbtrIKnkml1z%2FAAAAAAAAAAAAAAAAAAAAADh-g2rnOm3IZ7k5sJ4IGzEcdVC47a-Qe6uipmZLws2u%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DAEnsCbwJfek6ZmYj4qs07DVad8Y%253D)
[백준] 20918. 전구
📌문제 https://www.acmicpc.net/problem/21918 21918번: 전구 $N$개의 전구가 있고 맨 왼쪽에 있는 전구를 첫 번째라고 하자. 전구의 상태는 두 가지가 있으며 이를 숫자로 표현한다. $1$은 전구가 켜져 있는 상태를 의미하고, $0$은 전구가 꺼져 있는 상태를 www.acmicpc.net 🎖️난이도 ✔️풀이 n, m = map(int, input().split()) s_list = list(map(int, input().split())) for _ in range(m): a, b, c = map(int, input().split()) if a == 1: s_list[b-1] = c elif a == 2: s_list[b-1:c] = [(s_list[i]+1)%2 for ..
![[백준] 20546. 기적의 매매법](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbYZudj%2FbtrIH7o1x9j%2FAAAAAAAAAAAAAAAAAAAAAJma-kuQOd7Qa-XrttOGTew2GMsl2G6yduyHIHFZny-8%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DzVlQQ%252Bs1MeLqzkeTnQFgYC55M8A%253D)
[백준] 20546. 기적의 매매법
📌문제 20546번: 🐜 기적의 매매법 🐜 1월 14일 기준 준현이의 자산이 더 크다면 "BNP"를, 성민이의 자산이 더 크다면 "TIMING"을 출력한다. 둘의 자산이 같다면 "SAMESAME"을 출력한다. 모든 결과 따옴표를 제외하고 출력한다. www.acmicpc.net 🎖️난이도 ✔️풀이 seed = int(input()) juga_list = list(map(int, input().split())) # junhyun bnp = seed num = 0 for juga in juga_list: if bnp == 0: break buy = bnp // juga num += buy bnp -= juga * buy bnp_result = bnp + num * juga_list[-1] # sungmin t..
![[백준] 1991. 트리 순회](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbWWLhs%2FbtrIvSZGq8e%2FAAAAAAAAAAAAAAAAAAAAAJ5mY8ICWUNmB86-XaOa4Q4aR7ZhI7pD4QmzTp8VxYrC%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D8kV5Cq%252FcwDy336BlqUX%252BFnZuU%252Fc%253D)
[백준] 1991. 트리 순회
📌문제 1991번: 트리 순회 첫째 줄에는 이진 트리의 노드의 개수 N(1 ≤ N ≤ 26)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 노드와 그의 왼쪽 자식 노드, 오른쪽 자식 노드가 주어진다. 노드의 이름은 A부터 차례대로 알파 www.acmicpc.net 🎖️난이도 ✔️풀이 # sol1) dict & 재귀 n = int(input()) tree = {} for _ in range(n): item, left, right = input().split() tree[item] = (left, right) def preorder(item): print(item, end="") if tree[item][0] != ".": preorder(tree[item][0]) if tree[item][1] != "."..
![[백준] 11404. 플로이드](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FCjRzd%2FbtrHHjY2QJS%2FAAAAAAAAAAAAAAAAAAAAAHRaiVKapjNFXmVepDH5YsN5pEggHHut-qrLLCPQ03Tp%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DNIdVbnH6br4dPO2cyt%252F80L12Y2M%253D)
[백준] 11404. 플로이드
📌문제 11404번: 플로이드 첫째 줄에 도시의 개수 n이 주어지고 둘째 줄에는 버스의 개수 m이 주어진다. 그리고 셋째 줄부터 m+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 버스의 출발 도시의 번호가 www.acmicpc.net 🎖️난이도 ✔️풀이 import sys input = sys.stdin.readline INF = int(1e9) n = int(input()) m = int(input()) graph = [[INF]*(n+1) for _ in range(n+1)] for i in range(1, n+1): graph[i][i] = 0 for _ in range(m): a, b, c = map(int, input().split()) graph[a][b] = min(c, g..
![[백준] 11403. 경로 찾기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FlSo2w%2FbtrHuny3ALf%2FAAAAAAAAAAAAAAAAAAAAAHn_4TXjJBWhzc9127vwIMkWJ5oANumvdpLADygEHJe1%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3D47tDsiKCKd5EUaOJaHLnmwqA1eY%253D)
[백준] 11403. 경로 찾기
📌문제 11403번: 경로 찾기 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 경로가 있는지 없는지 구하는 프로그램을 작성하시오. www.acmicpc.net 🎖️난이도 ✔️풀이 # sol1) graph[i][i]도 못간다고 생각하고 무한으로 초기화 & 플로이드워셜로 최단거리 구하기 import sys input = sys.stdin.readline n = int(input()) INF = int(1e9) graph = [list(map(int, input().split())) for _ in range(n)] for i in range(n): for j in range(n): if graph[i][j] == 0: graph[i][j] = INF # 무한..