백준 / N과 M (5) / 15654번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: N과 M (5) / 15654번 (실버 3단계)문제 사이트: https://www.acmicpc.net/problem/15654 문제 설명 나의 풀이# N은 숫자가 나올 수 있는 최대, M은 수열의 길이N, M = map(int, input().split())line = list(map(int, input().split()))line.sort() # 숫자들을 정렬합니다.answer = []used = [False] * N # 각 숫자가 사용되었는지를 추적하기 위한 리스트def dfs(): if len(answer) == M: # 수열의 길이가 M에 도달하면 출력 print(' '.join(map(str, answer))) r..
백준 / 바이러스 / 2606번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 바이러스 / 2606번 (실버 3단계)문제 사이트: https://www.acmicpc.net/problem/2606 문제 설명 나의 풀이from collections import dequedef bfs(graph, start, visited): q = deque([start]) visited[start] = True while q: x = q.popleft() for i in range(len(graph[x])): y = graph[x][i] if not visited[y]: q.append(y) visited[y] = Tru..
백준 / 아기 상어 / 16236번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 아기 상어 / 16236번 (골드 3단계)문제 사이트: https://www.acmicpc.net/problem/16236 문제 설명 나의 풀이from collections import dequedef solution(ftank, n): # BFS 알고리즘을 사용할 큐 q = deque() # 걸리는 시간 max_time = 0 # 움직이기 move = [(0, 1), (0, -1), (1, 0), (-1, 0)] for i in range(n): for j in range(n): if ftank[i][j] == 9: # 아기 상어 위치 i, j / size = 2..
백준 / 평범한 배낭 / 12865번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 평범한 배낭 / 12865번 (골드 5단계)문제 사이트: https://www.acmicpc.net/problem/12865 문제 설명 나의 풀이# bp는 배낭을 의미, k는 준서가 담을 수 있는 무게def solution(bp, k): # 가장 가치가 높을 때 max_value = 0 # 가방에서 무게는 오름차순 가치는 내림차순으로 정렬 bp.sort(key=lambda x: (x[0], -x[1])) for i in range(0, len(bp)): current_weight = bp[i][0] current_value = bp[i][1] for j in range(i + 1, len(bp))..
백준 / 오큰수 / 17298번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 오큰수 / 17298번 (골드 4단계)문제 사이트: https://www.acmicpc.net/problem/17298 문제 설명 나의 풀이N = int(input())# 리스트NGE = list(map(int, input().split()))# 결과 값을 담을 스택stack = []for i in range(0, N - 1): stack.append(NGE[i]) for j in range(i + 1, N): if stack[-1] 스택을 이용해서 앞에 있는 숫자들을 하나씩 펼쳐보면서 나아가는 방식을 사용했다.이 풀이의 문제점은 시간 복잡도가 O(N^2)가 발생할 수 있다는 것이다.N = int(input())# 리스트NGE = lis..
백준 / 한 줄로 서기 / 1138번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 한 줄로 서기 / 1138번 (실버 2단계)문제 사이트: https://www.acmicpc.net/problem/1138 문제 설명 나의 풀이N = int(input())# 처음 아침에 줄 서는 사람들people = list(map(int, input().split()))# 결과 값result = [0] * N# 각 위치에 해당하는 인덱스 리스트를 만들어서# 조건에 맞는 위치를 찾기 위해 사용할 수 있음available_positions = list(range(N))# 사람의 번호는 1부터 N까지for number in range(1, N + 1): p = people[number - 1] result[available_positions[p]] =..
백준 / 연구소 / 14502번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 연구소 / 14502번 (골드 4단계)문제 사이트: https://www.acmicpc.net/problem/14502 문제 설명 나의 풀이from collections import dequedef bfs(): q = deque() vc = [row[:] for row in virus] for i in range(N): for j in range(M): if vc[i][j] == 2: q.append((i, j)) while q: y, x = q.popleft() for iy, ix in [(0, 1), (0, -1), (1, 0), (-1, 0)]: ..
백준 / 좋다 / 1253번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 좋다 / 1253번 (골드 4단계)문제 사이트: https://www.acmicpc.net/problem/1253 문제 설명 나의 풀이N = int(input())A = list(map(int, input().split()))A.sort()# 좋은 수를 셀 배열s = set()for i in range(0, len(A) - 1): for j in range(i + 1, len(A)): result = A[i] + A[j] if result 중복을 고려하지 못한 풀이 방법이다. 그래서 틀렸다.N = int(input())A = list(map(int, input().split()))A.sort()# 개수를 셀 변수cnt = 0for..
백준 / 가장 긴 증가하는 부분 수열 4 / 14002번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 가장 긴 증가하는 부분 수열 4 / 14002번 (골드 4단계)문제 사이트: https://www.acmicpc.net/problem/14002 문제 설명 나의 풀이n = int(input())data = list(map(int, input().split()))dp = [1] * (n + 1)for i in range(len(data)): for j in range(i): if data[j] ※ 알아야 할 것https://www.acmicpc.net/problem/12015 이 문제랑 다르다.이 풀이는 1번째 코드에서 수열이 증가하면 증가하는 길이만큼 출력한다.그리고 그 최대 증가하는 수들은 x 값을 가지고 있을 테니깐 뒤에서부터 x 값과 같..
백준 / 회의실 배정 / 1931번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 회의실 배정 / 1931번 (실버 1단계)문제 사이트: https://www.acmicpc.net/problem/1931 문제 설명 나의 풀이def solution(m): count = 0 # end는 현재 회의 끝나는 시간 end = -1 # s는 다음 회의 시작, e는 다음 회의 끝 for s, e in m: if end 이 문제의 핵심은 회의 끝나는 시간을 오름차순(이게 우선적으로 와야함), 회의 시작하는 시간을 오름차순을 통해서 가장 많이 사용할 수 있는 회의 시간을 찾는 것이 중요하다. 하지만 위 풀이는 정답과 비슷하지만 반례가 발생한다. 회의 끝나는 시간을 오름차순을 했지만 회의 시작하는 시간을 오름차순을 하지..
백준 / 그룹 단어 체커 / 1316번 / Python
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 그룹 단어 체커 / 1316번 (실버 5단계)문제 사이트: https://www.acmicpc.net/problem/1316 문제 설명 나의 풀이def solution(s): stack = [] alpha = {chr(i + 96) : 0 for i in range(1, 27)} for word in s: if not stack: stack.append(word) continue if stack[-1] == word: continue elif stack[-1] != word: stack.append(word) for ..
백준 / 최솟값 찾기 / 11003번 / Python(PyPy3 제출)
·
코딩테스트(프로그래머스 & 백준)/백준-Python
*문제 출처는 백준에 있습니다. 문제 제목: 최솟값 찾기 / 11003번 (플래티넘 5단계)문제 사이트: https://www.acmicpc.net/problem/11003 문제 설명 나의 풀이import heapqfrom collections import dequedef solution(lis, l): # 결과 result = [] # L를 계산할 deque() q = deque() for number in lis: q.append(number) if len(q) == l + 1: q.popleft() # 최소 값을 구할 힙 heap = list(q) heapq.heapif..
김치바보
'코딩테스트(프로그래머스 & 백준)' 카테고리의 글 목록 (6 Page)