Python_알고리즘/Silver II
-
1654. [Python]랜선 자르기Python_알고리즘/Silver II 2025. 1. 15. 02:16
1. 문제 https://www.acmicpc.net/problem/1654 2. 접근 방법 시간 제한: 2초메모리 제한: 128MB이분 탐색 3. 파이썬 코드 # 인풋 처리import sys# 많은 인풋input = sys.stdin.readlineN, K = map(int,input().split())# 랜선 길이num_list = []# 최대값 최소값 설정right = 2**31 - 1left = 1for _ in range(N): num_list.append(int(input()))# 이분 탐색while left = K: left = middle + 1print(right) 4. 문제를 풀고난 후 생각 이분 탐색문제로 right 값으로는 랜선 최대 길이 left 로는 최소 길이인..
-
1569. [Python]정사각형으로 가리기Python_알고리즘/Silver II 2024. 2. 18. 14:57
1. 문제 https://www.acmicpc.net/problem/1569 1569번: 정사각형으로 가리기 정사각형으로 가려지는 점이란, 어떤 점이 그 정사각형의 한 변 위에 놓여져 있을 때, 정사각형으로 가려진다고 한다. 점이 N개가 주어진다. N개의 점 모두를 가릴 수 있는 정사각형을 구하는 프 www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 128MB 많은 조건 분기 3. 파이썬 코드 import sys input = sys.stdin.readline N = int(input()) square_point = set() min_x = sys.maxsize max_x = -sys.maxsize min_y = sys.maxsize max_y = -sys.maxsize che..
-
1706. [Python]크로스 워드Python_알고리즘/Silver II 2024. 1. 14. 00:56
1. 문제 https://www.acmicpc.net/problem/1706 1706번: 크로스워드 동혁이는 크로스워드 퍼즐을 좋아한다. R×C 크기의 크로스워드 퍼즐을 생각해 보자. 이 퍼즐은 R×C 크기의 표로 이루어지는데, 퍼즐을 다 풀면 금지된 칸을 제외하고는 각 칸에 알파벳이 하나씩 www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 128MB 정렬 문자열 파싱 3. 파이썬 코드 R, C = map(int,input().split()) matrix = [ input() for _ in range(R) ] word_list = [] # 가로 방향으로 반복하며 # 을 제외한 문자들을 정답 리스트에 저장 for i in range(R): word = "" for j in ra..
-
1138. [Python]한 줄로 서기Python_알고리즘/Silver II 2023. 12. 5. 03:14
1. 문제 https://www.acmicpc.net/problem/1138 1138번: 한 줄로 서기 첫째 줄에 사람의 수 N이 주어진다. N은 10보다 작거나 같은 자연수이다. 둘째 줄에는 키가 1인 사람부터 차례대로 자기보다 키가 큰 사람이 왼쪽에 몇 명이 있었는지 주어진다. i번째 수는 0보다 www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 128MB 구현 3. 파이썬 코드 N = int(input()) # 값 리스트 num_list = list(map(int,input().split())) # 정답을 출력할 리스트 ans_list = [0]*N # enumerate 사용하여 index와 value 같이 받아옴 for i,v in enumerate(num_list): ..
-
15663. [Python]N과 M(9)Python_알고리즘/Silver II 2023. 10. 3. 16:31
1. 문제 https://www.acmicpc.net/problem/15663 15663번: N과 M (9) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 2. 접근 방법 시간 제한: 1초 메모리 제한: 512MB 백트래킹 3. 파이썬 코드 # 중복된 수 제거한 순열 생성 def N_and_M(num): # ans 리스트 길이가 M 과 같으면 if len(ans) == M: # set 에 tuple 형태로 저장 answer.add(tuple(ans)) return else: # 그 외의 경우 for i in range(N): # i 값이..
-
17086. [Python]아기 상어2Python_알고리즘/Silver II 2023. 9. 26. 01:13
1. 문제 https://www.acmicpc.net/problem/17086 17086번: 아기 상어 2 첫째 줄에 공간의 크기 N과 M(2 ≤ N, M ≤ 50)이 주어진다. 둘째 줄부터 N개의 줄에 공간의 상태가 주어지며, 0은 빈 칸, 1은 아기 상어가 있는 칸이다. 빈 칸과 상어의 수가 각각 한 개 이상인 입력만 www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 512MB 브루트포스 BFS(너비 우선 탐색) 3. 파이썬 코드 from collections import deque # 방향 배열 direction = [(-1,-1), (-1,0), (-1,1), (0,-1), (0,1), (1,-1), (1,0), (1,1)] def BFS(start): global ma..
-
18870. [Python]좌표 압축Python_알고리즘/Silver II 2023. 9. 4. 20:13
1. 문제 2. 접근 방법 시간 제한: 2초 메모리 제한: 512MB 정 3. 파이썬 코드 N = int(input()) num_list = list(map(int, input().split())) # 정렬된 리스트 answer = sorted(num_list) # 인덱스 번호매칭 cnt = 0 # 딕셔너리 활용 ans_dict = {} # 정렬된 리스트에서 for i in answer: # 딕셔너리에 값이 없으면 if i not in ans_dict: # 값과 인덱스 번호를 넣어줌 ans_dict[i] = cnt # 인덱스 번호 1 증가 cnt += 1 # num_list 에서 대칭되는 key 값 출력 for j in num_list: print(ans_dict[j], end=" ") 4. 문제를 풀고..
-
2644. [Python]촌수계산Python_알고리즘/Silver II 2023. 9. 4. 19:28
1. 문제 https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 2. 접근 방법 시간 제한: 1초 메모리 제한: 128MB DFS(깊이 우선 탐색) 3. 파이썬 코드 import sys # 많은 인풋 처리 input = sys.stdin.readline # DFS 함수 def DFS(start): # 시작 위치 1로 방문처리 visited[start] = 1 global cnt global end # matrix로 접근 for i..
-
5002. [Python]도어맨Python_알고리즘/Silver II 2023. 8. 27. 21:02
1. 문제 https://www.acmicpc.net/problem/5002 5002번: 도어맨 첫째 줄에 정인이가 기억할 수 있는 가장 큰 차이 X N: # 리스트가 존재하면 if words: # 값을 한개 더 뽑아본다 middle_check = words.popleft() # m_cnt 값이 w_cnt 값보다 큰 경우 if m_cnt > w_cnt: # m_cnt 값이 위에서 증가됐기 때문에 1 뺀다 m_cnt -= 1 # 한개 더 뽑은 값이 W 인 경우 if middle_check == "W": # w_cnt 값 1 증가 w_cnt += 1 # M 값이였던 check 값을 리스트에 왼쪽에 더해줌 words.appendleft(check) # M 인 경우 반복문 종료 else: break # m_cn..
-
1012. [Python]유기농 배추Python_알고리즘/Silver II 2023. 8. 19. 23:43
1. 문제 https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 2. 접근 방법 시간 제한: 1초 메모리 제한: 512MB DFS(깊이 우선 탐색) 3. 파이썬 코드 import sys input = sys.stdin.readline dx = [-1, 0, 1, 0] dy = [0, -1, 0, 1] # 깊이 우선 탐색 함수 def DFS(start): stack = [] stack.append(start) visited[start[0]][start[1]] = ..