목록algorithm/baekjoon (96)
하루일문
풀이 import sys n = int(sys.stdin.readline()) file_li = [] for i in range(n): file = sys.stdin.readline().strip() file_li.append(file[file.find(".") + 1:]) from collections import Counter file_li = Counter(file_li).most_common() file_li = sorted(file_li) for _ in file_li: print(*_) 해설 find로 . 위치를 찾아주었다.
풀이 import sys n = int(sys.stdin.readline()) book_li = [] for _ in range(n): book = sys.stdin.readline().strip() book_li.append(book) # 먼저 사전 순으로 정렬 book_li = sorted(book_li) from collections import Counter count = Counter(book_li).most_common() print(count[0][0]) most_common() = 튜플로 묶어 준다
import sys num = sys.stdin.readline().strip() num_dict ={} for n in num: if int(n) not in num_dict: num_dict[int(n)] = 1 else: num_dict[int(n)] += 1 for i in range(9, -1, -1): if i in num_dict: print(str(i) * num_dict[i], end = "")
풀이 import sys card_n = int(input()) card = list(map(int, sys.stdin.readline().split())) M = int(input()) s_g = list(map(int, sys.stdin.readline().split())) from collections import Counter count = Counter(card) for i in s_g: if i in count: print(count[i], end = " ") else: print(0, end = " ")
풀이 import sys sys.setrecursionlimit(10**6) # 파이썬은 재귀 깊이가 정해져있어서 의도적으로 늘려주어야 합니다. dx = [-1, -1, -1, 0, 0, 1, 1, 1] dy = [-1, 0, 1, -1, 1, -1, 0, 1] def dsf(graph, x, y, visit): # 8방향 반복 for _ in range(8): nx = x + dx[_] ny = y + dy[_] # 표 안에 들어가면서 안 드린곳 if 0
풀이 # DFS def dfs(grap, v, visit): # 지금 들린곳 체크 visit[v] = True # 들린곳 순서에 따라 프린트 DFS.append(v) # 작은 것부터 우선해서 들여 for i in sorted(grap[v]): # 안 들렸다면 들려 if not visit[i]: dfs(grap, i, visited) # BFS from collections import deque def bfs(grap, v, visit): # 덱처리 queue = deque([v]) # 방문 체크 visit[v] = True while queue: # 리스트에 맨 앞쪽 체크, 제거 n = queue.popleft() # 체크한 부분 순서에따라 프린트 BFS.append(n) # 체크된 리스트에 있는 숫자..
풀이 import sys, math n = int(sys.stdin.readline()) nums = [] for _ in range(n): num = int(sys.stdin.readline()) nums.append(num) # 오름차 정렬 s_n = sorted(nums) #평균 #round = 반올림 avg = round(sum(nums)/n) #중앙값 # math.ceil = 올림 mid = s_n[math.ceil(len(nums)//2)] #최빈값 #딕셔너리 생성 cnt = {} #딕셔너리에 넣고 있으면 카운트 for i in range(len(s_n)): if s_n[i] not in cnt: cnt[s_n[i]] = 1 else: cnt[s_n[i]] += 1 # value값이 value..
초기 코드 nums = [] import heapq, sys for _ in range(int(sys.stdin.readline())): nums.append(int(sys.stdin.readline())) heapq.heapify(nums) for _ in range(len(nums)): print(heapq.heappop(nums)) 오류 메모리 오류 처음 봐서 당황했다 수정 방법 메모리를 위해서 sys.stdin.readline() 필수 append 사용 금지 수정 코드 import sys n = int(sys.stdin.readline()) # 최대 숫자까지 저장 arr = [0] * 10000 for _ in range(n): num = int(sys.stdin.readline()) 같은 수가 ..