분류 전체보기 753

[백준] 2108 통계학 파이썬 풀이 (정렬)

백준 문제풀이 입력받은 숫자들을 리스트에 저장하고 크기 순서대로 정렬을 해주었다. (중앙값을 구하기 위해) 산술 평균: sum을 len으로 나누고 반올림했다. 중앙값: len의 나누기2의 위치에 있는 값을 출력한다. 최빈값: Counter사용 Counter(num_list).most_common() 메소드는 num_list에서 가장 많이 들어있는 순서대로 dict형태로 출력한다. 예를 들어 num_list가 [1,1,1,2,2,3]이면 { 1:3 , 2:2, 3:1} 이렇게 출력한다. 여기서는 가장 많이 들어있는 것이 두개넘는지만 보면 되기때문에 2개까지 확인한다. 첫번째 나온 빈도와 두번째 나온 빈도가 같으면 최빈값 중에서 두번째로 작은 값( mode[1][0])을 출력한다 범위 : 마지막 숫자와 맨 ..

[백준] 1149 RGB거리 파이썬 풀이(동적 계획법)

백준 문제 n번째 집은 그 앞의 집과 색이 같으면 안된다. 그 뒤에 집이랑도 색이 같으면 안된다. 풀이 집의 개수가 주어지고 집마다 빨강, 초록, 파랑으로 칠할때의 값이 주어지는 것을 리스트로 만든다. 1번째 집이 빨간색으로 칠하는 비용은 p[0][0]이고 2번째 집이 파랑색으로 칠하는 비용은 p[1][2] 이런식으로 집이 한개만 있을때는 p[0][0] p[0][1] p[0][2] 중에서 가장 작은 것을 구하면 된다. 집이 두개 이상일때는 지금 집이 빨강일때 -> 전 집을 파랑으로 칠한것 or 초록으로 칠한 것 중에서 비용을 더한 것이 가장 작을때를 p[i][0]에 저장한다 지금 집이 초록일때, 파랑일때도 마찬가지로 계산하여 p[i][0] p[i][1] p[i][2] 에 저장하고 그 중에서 가장 작은 값..

[백준] 9461 파도반 수열 파이썬 풀이 (동적 계획법)

백준 문제 파도반 수열은 1 1 1 2 2 3 4 5 7 9 12 ... 이다 4번째 수인 2부터 보면 2번째 수와 1번째 수를 더한 값이다. 6번째 수인 3은 4번째 수인 2와 3번째 수인 1을 더한 값이다. n번째 수는 n-2번째 수와 n-3번째 수를 더 한 값이다. 풀이 N은 100까지밖에 안되므로 미리 구해놓자 dp 배열을 100인덱스까지 만들어놓고 1 2 3 번째는 1로 초기화. 4번째 부터 위에서 말한 규칙을 적용하여 dp배열을 미리 만들어 놓음 코드 num = int(input()) dp = [0 for i in range(101)] dp[1] = 1 dp[2] = 1 dp[3] = 1 for i in range(4,101): dp[i] = dp[i-2] + dp[i-3] for _ in r..

[백준] 11866 요세푸스 문제 0 파이썬 풀이 (큐, 덱)

코드 from collections import deque n, k = map(int, input().split()) stack = deque([i for i in range(1, n+1)]) print("") 풀이 원래 이해가 안됐던 점은 만약에 7 7 이 입력되면 7번째 사람이 죽고 6명 남으면 어떡하지? 라고 생각했는데 그러면 계속 돌면서 7번째 사람을 죽이는 것이다 예를 들어 1 2 3 4 5 6 사람이 있으면 여기서 7번째는 1번이다 stack에 1부터 n번호까지 사람을 넣고 k번째 사람이 맨 왼쪽에 올때까지 stack에 맨 앞에 원소를 꺼내서 맨 뒤에 넣는다 7명이고 3번째 사람을 죽인다고 치면 1 2 3 4 5 6 7 에서 2 3 4 5 6 7 1 을 만들고 3 4 5 6 7 1 2 를 만들..

[백준] 2667 단지 번호 붙이기 파이썬 풀이 (DFS, BFS)

코드 import sys dx=[-1,0,1,0] dy=[0,1,0,-1] n=int(sys.stdin.readline()) a=[list(sys.stdin.readline()) for _ in range(n)] print(a) cnt=0 apt=[] def dfs(x,y): global cnt a[x][y] = '0' #방문한 곳은 0으로 바꾼다. cnt+=1 for i in range(4): nx = x + dx[i] #설명 ny = y + dy[i] if nx = n or ny =n: continue if a[nx][ny] == '1': dfs(nx,ny) for i in range(n): for j in range(n): if a[i][j] == '1': c..

[백준] 1260 DFS와 BFS 파이썬 풀이

2021.06.21 - [알고리즘/이론] - [알고리즘] DFS 와 BFS 깊이 우선 탐색, 너비 우선 탐색 [알고리즘] DFS 와 BFS 깊이 우선 탐색, 너비 우선 탐색 DFS/ BFS 자료의 검색, 트리나 그래프를 탐색하는 방법 한 노드를 시작으로 인접한 다른 노드를 재귀적으로 탐색해가고 끝까지 탐색하면 다시 위로 올라와서 다음을 탐색하여 검색하는 것. DFS (깊 sso-feeling.tistory.com 코드 #N : 정점의 개수/ M: 간선의 개수/ V: 시작할 정점 N,M,V=map(int,input().split()) matrix=[[0]*(N+1) for i in range(N+1)] for i in range(M): a,b = map(int,input().split()) matrix[a..