분류 전체보기
-
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 값이..
-
1107. [Python]리모컨Python_알고리즘/Gold V 2023. 10. 2. 02:58
1. 문제 2. 접근 방법 시간 제한: 2초 메모리 제한: 256MB 브루트 포스 3. 파이썬 코드 # N 보다 커지는 경우의 값과 커지기 직전의 값을 찾는 함수 def make_perm(num): # ans_cnt 로 리스트 길이 체크 global ans_cnt # 리스트 길이가 2인 경우 함수 탈출 if ans_cnt == 2: return # num 매개변수가 N_length 와 같으면 문자열을 합쳐서 정수로 바꿔 서 answer 리스트에 추가 if num == N_length: checking = int("".join(ans)) # checking 값이 N 기준값보다 큰 경우 if checking >= N: answer.append(checking) ans_cnt += 1 # checking 값이..
-
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..
-
그래프(Graph)와 행렬(matrix)알고리즘 2023. 9. 22. 17:09
❓그래프 Vertex(정점)과 Edge(간선)으로 이루어진 자료구조 정점과 정점 사이의 관계를 Edge(간선)으로 표현한다. 그래프 구성 요소 Vertex/Node(정점) : Node 혹은 Vertex 라고 표현하며 그래프에서 각각 지점을 의미한다. (위 그림은 1, 2, 3 등) Edge/Link(간선) : Node 와 Node 혹은 Vertex 와 Vertex등 각 정점들을 연결하는 선을 의미한다. (그래프 사이 선) Weight(가중치) : 간선을 통해 이동하는데 소요되는 비용등을 표시하는 곳에 사용한다. ( 표기되어 있지 않지만 간선과 간선사이의 비용등을 나타냄 ) Direction Graph : 방향이 있는 그래프를 의미하고 간선의 방향에 따라 이동만 가능한 경우에 사용된다. Undirected..
-
15686. [Python]치킨 배달Python_알고리즘/Gold V 2023. 9. 22. 01:09
1. 문제 https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 2. 접근 방법 시간 제한: 1초 메모리 제한: 512MB 구현 브루트 포스 3. 파이썬 코드 from itertools import combinations # 들어온 리스트들을 바탕으로 visited 값 갱신해주는 함수 def check_value(first_list, second_list): for i in first_list: for j in second_li..
-
7576. [Python]토마토Python_알고리즘/Gold V 2023. 9. 17. 16:36
1. 문제 https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 2. 접근 방법 시간 제한: 1초 메모리 제한: 2568MB BFS(너비 우선 탐색) 3. 파이썬 코드 from collections import deque def BFS(): # 요일 체크하는 변수 global day # matrix 좌표가 1인 값을 저장한 리스트 q while q: # q에서 값을 하나씩 빼주면서 check = q.popleft() # 방향배열 탐색..
-
1334. [Python]다음 팰린드롬Python_알고리즘/Gold V 2023. 9. 17. 16:19
1. 문제 https://www.acmicpc.net/problem/1334 1334번: 다음 팰린드롬 수 팰린드롬 수는 앞으로 읽어도, 뒤로 읽어도 같은 숫자이다. 101, 4, 6666와 같은 숫자는 팰린드롬 수이고, 10, 564, 15452와 같은 숫자는 아니다. 어떤 수 N이 주어질 때, N보다 큰 팰린드롬 수 중에서 가 www.acmicpc.net 2. 접근 방법 시간 제한: 2초 메모리 제한: 128MB 구현 3. 파이썬 코드 N = input() N = str(int(N) + 1) # N의 길이 변수에 저장 N_length = len(N) # N을 슬라이싱해서 변수에 저장할 변수 ans = "" # N의 길이가 짝수인 경우와 홀수인 경우 if len(N) % 2 == 0: # 중앙값과 중앙..
-
1038. [Python]감소하는 수Python_알고리즘/Gold V 2023. 9. 8. 16:42
1. 문제 https://www.acmicpc.net/problem/1038 1038번: 감소하는 수 음이 아닌 정수 X의 자릿수가 가장 큰 자릿수부터 작은 자릿수까지 감소한다면, 그 수를 감소하는 수라고 한다. 예를 들어, 321과 950은 감소하는 수지만, 322와 958은 아니다. N번째 감소하는 수를 www.acmicpc.net 2. 접근 방법 시간 제한: 1초 메모리 제한: 128MB 백트래킹 브루트포스 3. 파이썬 코드 # 문자열 체크하는 함수 def checking(num, M): # 글로벌 문자 변수 선언 global check global cnt global ans # M 의 길이가 1로 끝일때 if M == 1: # 이전의 check 값과 num[0] 값의 크기를 비교해 작으면 cnt ..
-
1083. [Python]소트Python_알고리즘/Gold V 2023. 9. 7. 01:48
1. 문제 https://www.acmicpc.net/problem/1083 1083번: 소트 크기가 N인 배열 A가 있다. 배열에 있는 모든 수는 서로 다르다. 이 배열을 소트할 때, 연속된 두 개의 원소만 교환할 수 있다. 그리고, 교환은 많아봐야 S번 할 수 있다. 이때, 소트한 결과가 사전 www.acmicpc.net 2. 접근 방법 시간 제한: 1초 메모리 제한: 128MB 그리디 알고리즘 정렬 3. 파이썬 코드 N = int(input()) num_list = list(map(int, input().split())) limit = int(input()) # 리스트 길이 체크 num_length = len(num_list) cnt = 0 # limit 으로 들어온 값이 0 보다 크고 cnt 값이..
-
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. 문제를 풀고..