본문 바로가기

분류 전체보기

(89)
백준 20157 - 화살을 쏘자! (파이썬) 난이도 골드 5 유형 수학 브루트 포스 해시맵 해결 실수형의 값을 이용하지 말고 분수꼴로 넣어주면 해결할 수 있다. gcd를 이용하여 기약분수 꼴로 해시맵에 저장해 준 뒤 가장 큰 값을 출력해주면 된다. 코드 from sys import stdin from collections import defaultdict from math import gcd input=stdin.readline def gettilt(x,y): if x==0: if y>0: return '위' return '아래' if y==0: if x>0: return '오른쪽' return '왼쪽' div=gcd(x,y) return (x//div,y//div) n=int(input()) arr=[map(int,input().split()) ..
백준 1824 - 도미노 (파이썬) 난이도 플래티넘 3 유형 이분 매칭 해결 아이디어를 떠올리기까지 한참 걸렸다. 비숍 문제와 같이 흑백으로 생각하고 이분매칭을 이용해주면 풀린다. 코드 from sys import stdin from collections import defaultdict input=stdin.readline def dfs(x): if vi[x]: return False vi[x]=True for i in able[x]: if placed[i]==0 or dfs(placed[i]): vi[i]=True placed[i]=x return True return False n,m=map(int,input().split()) able=[[] for i in range(n*m+1)] arr=[[m*j+i for i in range(..
데이터의 종류 데이터는 정형 데이터와 비정형 데이터로 나눌 수 있다. 정형 데이터(Structured data) 영어 뜻 그대로 해석하면 구조화된, 짜여진 데이터이다. 예를 들어 사람의 나이이나 날짜 등 딱 떨어지고 명확한 값들을 뜻한다. 보통 통계청과 같은 공공기관에서는 보통 정형 데이터의 자료를 제공받을 수 있다. 비정형 데이터에 비해 정형 데이터는 수가 적다. 비정형 데이터(Unstructured data) 구조화 되지 않은, 규칙 없는 값들을 뜻한다. 음성이나 영상, 이미지 등의 데이터가 비정형 데이터에 속한다. 오늘날 생성되고 있는 데이터는 대부분 비정형 데이터라고 한다.
백준 1806 - 부분합 (파이썬) 난이도 골드 4 유형 두 포인터 해결 간단한 두 포인터 문제이다. s보다 구간 합이 작으면 r을 증가, 반대면 l을 증가시켜주면 된다. 코드 from sys import stdin input=stdin.readline n,s=map(int,input().split()) arr=[*map(int,input().split())] l=0 r=0 total=0 ans=100001 while l
백준 14267 - 회사 문화 1 (파이썬) 난이도 골드 4 유형 그래프 탐색 - dfs 트리 - Ternary tree 다이나믹 프로그래밍 트리에서의 다이나믹 프로그래밍 해결 사장으로부터 내려가면서 칭찬받은 수치를 같이 내려주면 된다. 루트가 정해져있고 상하관계가 확실해서 방문처리를 사용할 필요가 없었다. n이 m보다 크다는 보장이 없으므로 한 사람이 여러번 칭찬을 받을 수도 있다. 코드 from sys import stdin,setrecursionlimit from collections import defaultdict input=stdin.readline setrecursionlimit(100000) n,m=map(int,input().split()) level=[*map(int,input().split())] tree={i:defaultdi..
백준 15681 - 트리와 쿼리 (파이썬) 난이도 골드 5 유형 트리에서의 다이나믹 프로그래밍 DFS 해결 트리DP는 처음 해보았지만 문제에서 뭔가 느낌이 왔다. DFS를 쓰고 방문처리를 해주면 될 것 같았다. dfs 사용시 메모리 초과와 재귀횟수 제한 설정에 유의해줘야 하는 문제였다. 코드 from sys import stdin,setrecursionlimit from collections import defaultdict input=stdin.readline setrecursionlimit(1000000) n,r,q=map(int,input().split()) tree=[[] for i in range(n+1)] #트리 dp=[1]*(n+1) # 정답 vi=[0]*(n+1) # 방문처리 for i in range(n-1): u,v=map(in..
백준 1240 - 노드 사이의 거리(파이썬) 난이도 골드 5 유형 그래프 탐색 트리 해결 간단하게 (n+1)의 제곱 크기의 배열로 구현 가능하다. 더 빠르게 풀고싶다면 딕셔너리를 이용해주면 된다. n의 크기도 그리 크지 않고 m의 크기도 그리 크지 않아서 m번의 요청이 들어올 때 마다 값을 저장하지 않고 탐색을 해 주어도 시간적으로 넉넉하다. dfs나 bfs나 다익스트라 중 자신이 편한 것을 이용해주면 된다. 거리가 10000이하의 정수 즉 0이나 음수가 들어갈 수도 있지만 구조가 트리 구조기 때문에 사이클이 형성되어 있지 않으므로 별로 상관 없다. 코드 배열 사용(느림) from sys import stdin from collections import deque from math import inf input=stdin.readline n,m=m..
백준 9934 - 완전이진트리 (파이썬) 난이도 실버 1 유형 트리 - 순회 해결 트리의 각 순회의 특징을 잘 이해했다면 쉽게 풀 수있다. 주어지는 이동 순서는 꽉 찬 이진트리에서 중위순회를 한 결과와 똑같다. 그것을 토대로 구현해주면 된다. 코드 from sys import stdin input=stdin.readline k=int(input()) order=list(map(int,input().split())) line=[(len(order)//2,0,len(order))] while True: nextline=[] for i,mn,mx in line: print(order[i],end=' ') nextline.append(((i+mn)//2,mn,i)) nextline.append(((i+mx)//2,i,mx)) print() line=n..
백준 20950 - 미술가 미미 (파이썬) 난이도 실버 2 유형 백트래킹, 브루트 포스 해결 n줄에 걸쳐 RGB값 입력받음. 추가적으로 곰두리값 한줄을 더 입력받음 n개의 물감을 섞어(최소 2 최대 7) 만들 수 있는 물감 중 곰두리값과의 차이가 가장 작은 값 출력 더하고 나눈 값을 넘겨주면 안된다. (= 매번 소수점을 버리면 안되고 마지막에만 a//x + b//x + c//x 와 (a+b+c)//x는 항상 같지 않으므로) 이제 간단히 구현만 해주면 된다. 코드 from sys import stdin input=stdin.readline # n줄에 걸쳐 RGB값 입력받음. # 추가적으로 곰두리값 한줄을 더 입력받음 # n개의 물감을 섞어(최소 2 최대 7) 만들 수 있는 물감 중 # 곰두리값과의 차이가 가장 작은 값 출력 # 더하고 나눈 값을 넘..
백준 23031 - 으어어.. 에이쁠 주세요 (파이썬) 난이도 골드4 유형 구현 해결 단순 구현 문제이다. 스위치가 켜질때 하나의 배열만 사용해서 문제를 해결한다면 불이 켜지면서 좀비나 아리 혹은 다른 스위치를 없에버리지는 않았나 신경을 써줘야 한다. 또한 좀비와 아리의 이동에도 신경을 많이 써줘야 한다. 코드 from sys import stdin from collections import deque input=stdin.readline n=int(input()) a=input().rstrip() zomloc=deque([]) dx=[0,-1,0,1,1,1,-1,-1,0] dy=[-1,0,1,0,-1,1,-1,1,0] move=2 light=[[0 for i in range(n)]for i in range(n)] s=[list(input().rstrip()..