본문 바로가기

알고리즘 (Python)

(259)
[정렬 알고리즘] 성적이 낮은 순서로 학생 출력하기 - 파이썬(python) 성적이 낮은 순서로 학생 출력하기 난이도 : 下 풀이 시간 : 20분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 n = int(input()) array = [] for i in range(n): input_list = input().split() array.append((input_list[0], int(input_list[1]))) array = sorted(array, key=lambda x: x[1]) for x in array: print(x[0], end=' ') 예시 n = int(input()) array = [] for i in range(n): input_data = input().split() array.append((input_data[0], int(input_data[1..
[정렬 알고리즘] 위에서 아래로 - 파이썬(python) 위에서 아래로 난이도 : 下 풀이 시간 : 15분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 n = int(input()) array = [] for i in range(n): array.append(int(input())) array.sort(reverse=True) for i in array: print(i, end=' ') 예시 n = int(input()) array = [] for i in range(n): array.append(int(input())) array = sorted(array, reverse=True) for i in array: print(i, end=' ') 해설 n과 array에 각각 입력받은 후, 파이썬의 sort() 함수를 사용하여 내림차순으로 정렬하였습니다...
[BFS 알고리즘] 미로 탈출 - 파이썬(python) 미로 탈출 난이도 : 中下 풀이 시간 : 30분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 from collections import deque n, m = map(int, input().split()) graph = [] for i in range(n): graph.append(list(map(int, input()))) dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def bfs(x, y): queue = deque() queue.append((x, y)) while queue: x, y = queue.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] if (nx = n or ..
[DFS 알고리즘] 음료수 얼려 먹기 - 파이썬(python) 음료수 얼려 먹기 난이도 : 中下 풀이 시간 : 30분 시간 제한 : 1초 메모리 제한 : 128 MB 해답 n, m = map(int, input().split()) graph = [] for i in range(n): graph.append(list(map(int, input()))) def dfs(x, y): if (x = m): return False else: if graph[x][y] == 0: graph[x][y] = 1 dfs(x-1, y) dfs(x+1, y) dfs(x, y-1) dfs(x, y+1) return True return False result = 0 for i in range(n): for j in range(m): if dfs(i, j) == True: result = ..
[CodeUp] 코드업 기초 100제 1099번 풀이 - 파이썬(python) 1099 : [기초-2차원배열] 성실한 개미 시간 제한 : 1초 메모리 제한 : 128 MB 문제 설명 영일이는 생명과학에 관심이 생겨 왕개미를 연구하고 있었다. 왕개미를 유심히 살펴보던 중 특별히 성실해 보이는 개미가 있었는데, 그 개미는 개미굴에서 나와 먹이까지 가장 빠른 길로 이동하는 것이었다. 개미는 오른쪽으로 움직이다가 벽을 만나면 아래쪽으로 움직여 가장 빠른 길로 움직였다. (오른쪽에 길이 나타나면 다시 오른쪽으로 움직인다.) 이에 호기심이 생긴 영일이는 그 개미를 미로 상자에 넣고 살펴보기 시작하였다. 미로 상자에 넣은 개미는 먹이를 찾았거나, 더 이상 움직일 수 없을 때까지 오른쪽 또는 아래쪽으로만 움직였다. 미로 상자의 구조가 0(갈 수 있는 곳), 1(벽 또는 장애물)로 주어지고, 먹이..
[CodeUp] 코드업 기초 100제 1098번 풀이 - 파이썬(python) 1098 : [기초-2차원배열] 설탕과자 뽑기 시간 제한 : 1초 메모리 제한 : 128 MB 문제 설명 부모님과 함께 유원지에 놀러간 영일이는 설탕과자(설탕을 녹여 물고기 등의 모양을 만든 것) 뽑기를 보게 되었다. 길이가 다른 몇 개의 막대를 바둑판과 같은 격자판에 놓는데, 막대에 있는 설탕과자 이름 아래에 있는 번호를 뽑으면 설탕과자를 가져가는 게임이었다. (잉어, 붕어, 용 등 여러 가지가 적혀있다.) 격자판의 세로(h), 가로(w), 막대의 개수(n), 각 막대의 길이(l), 막대를 놓는 방향(d:가로는 0, 세로는 1)과 막대를 놓는 막대의 가장 왼쪽 또는 위쪽의 위치(x, y)가 주어질 때, 격자판을 채운 막대의 모양을 출력하는 프로그램을 만들어보자. 입력 첫 줄에 격자판의 세로(h), 가로..
[백준] 그리디 알고리즘 - 슬라임 합치기 (14241번) #파이썬#python 슬라임 합치기 (14241번) 시간 제한 : 2초 메모리 제한 : 512 MB 문제 영선이와 효빈이는 슬라임을 합치는 게임을 하고 있다. 두 사람은 두 슬라임을 골라서 하나로 합쳐야 한다. 게임은 슬라임이 하나 남았을 때 끝난다. 모든 슬라임은 양수 크기를 가지고 있다. 두 슬라임 x와 y를 합쳤을 때, 합친 슬라임의 크기는 x+y가 된다. 또한, 슬라임을 합칠 때 마다 두 사람은 x*y 점수를 얻게 된다. 영선이와 효빈이가 얻을 수 있는 점수의 최댓값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 슬라임의 개수 N (2 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 슬라임의 크기가 주어진다. 크기는 100보다 작거나 같은 자연수이다. 출력 첫째 줄에 영선이와 효빈이가 얻을 수 있는 점수의 최댓값을 출력..
[CodeUp] 코드업 기초 100제 1097번 풀이 - 파이썬(python) 1097 : [기초-2차원배열] 바둑알 십자 뒤집기(설명) 시간 제한 : 1초 메모리 제한 : 128 MB 문제 설명 부모님을 기다리던 영일이는 검정/흰 색 바둑알을 바둑판에 꽉 채워 깔아 놓고 놀다가... "십(+)자 뒤집기를 해볼까?"하고 생각했다. 바둑판(19 * 19)에 흰 돌(1) 또는 검정 돌(0)이 모두 꽉 채워져 놓여있을 때, n개의 좌표를 입력받아 십(+)자 뒤집기한 결과를 출력하는 프로그램을 작성해보자. 입력 바둑알이 깔려 있는 상황이 19 * 19 크기의 정수값으로 입력된다. 십자 뒤집기 횟수(n)가 입력된다. 십자 뒤집기 좌표가 횟수(n) 만큼 입력된다. 단, n은 10이하의 자연수이다. 출력 십자 뒤집기 결과를 출력한다. 입력 예시 0 0 0 0 0 0 0 0 0 1 0 1 0 0..
[CodeUp] 코드업 기초 100제 1096번 풀이 - 파이썬(python) 1096 : [기초-2차원배열] 바둑판에 흰 돌 놓기(설명) 시간 제한 : 1초 메모리 제한 : 128 MB 문제 설명 기숙사 생활을 하는 학교에서 어떤 금요일(전원 귀가일)에는 모두 집으로 귀가를 한다. 오랜만에 집에 간 영일이는 아버지와 함께 두던 매우 큰 오목에 대해서 생각해 보다가 "바둑판에 돌을 올린 것을 프로그래밍 할 수 있을까?"하고 생각하였다. 바둑판(19 * 19)에 n개의 흰 돌을 놓는다고 할 때, n개의 흰 돌이 놓인 위치를 출력하는 프로그램을 작성해보자. 입력 바둑판에 올려 놓을 흰 돌의 개수(n)가 첫 줄에 입력된다. 둘째 줄 부터 n+1 번째 줄까지 힌 돌을 놓을 좌표(x, y)가 n줄 입력된다. n은 10이하의 자연수이고 x, y 좌표는 1 ~ 19 까지이며, 같은 좌표는 입력..
[CodeUp] 코드업 기초 100제 1095번 풀이 - 파이썬(python) 1095 : [기초-1차원배열] 이상한 출석 번호 부르기3(설명) 시간 제한 : 1초 메모리 제한 : 128 MB 문제 설명 정보 선생님은 오늘도 이상한 출석을 부른다. 영일이는 오늘도 다른 생각을 해보았다. 출석 번호를 다 부르지는 않은 것 같은데... 가장 빠른 번호가 뭐였지? 출석 번호를 n번 무작위로 불렀을 때, 가장 빠른 번호를 출력해 보자. 입력 번호를 부른 횟수(n, 1 ~ 10000)가 첫 줄에 입력된다. n개의 랜덤 번호(k, 1 ~ 23)가 두 번째 줄에 공백을 사이에 두고 순서대로 입력된다. 출력 출석을 부른 번호 중에 가장 빠른 번호를 1개만 출력한다. 입력 예시 10 10 4 2 3 6 6 7 9 8 5 출력 예시 2 내 풀이 num = int(input()) numlist = m..