본문 바로가기

알고리즘

(138)
[알고리즘] 프로그래머스 오픈채팅방 / python https://programmers.co.kr/learn/courses/30/lessons/42888 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def message(lst, dic): if lst[0] == 'Enter': return dic[lst[1]] + "님이 들어왔습니다." elif lst[0] == 'Leave': return dic[lst[1]] + "님이 나갔습니다." def solution(record): answer = [] dic = {} lst = [list(i.split(' ')) for i in record] for i in..
[알고리즘] 백준 12100 2048(Easy) / python, dfs https://www.acmicpc.net/problem/12100 12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2보다 크거나 같고, 1024보다 작거나 같은 2의 제곱꼴이다. 블록은 적어도 하나 주어진다. www.acmicpc.net from copy import deepcopy N = int(input()) Board = [list(map(int, input().split())) for _ in range(N)] def rotate(N, B): new_lst = deepcopy(B) for i in rang..
[알고리즘] 백준 14620 꽃길 / python https://www.acmicpc.net/problem/14620 14620번: 꽃길 2017년 4월 5일 식목일을 맞이한 진아는 나무를 심는 대신 하이테크관 앞 화단에 꽃을 심어 등교할 때 마다 꽃길을 걷고 싶었다. 진아가 가진 꽃의 씨앗은 꽃을 심고나면 정확히 1년후에 꽃이 피므로 진아는 다음해 식목일 부터 꽃길을 걸을 수 있다. 하지만 진아에게는 꽃의 씨앗이 세개밖에 없었으므로 세 개의 꽃이 하나도 죽지 않고 1년후에 꽃잎이 만개하길 원한다. 꽃밭은 N*N의 격자 모양이고 진아는 씨앗을 (1,1)~(N,N)의 지점 중 한곳에 심을 수 www.acmicpc.net def func(lst): dx, dy = [0, -1, 0, 1, 0], [0, 0, -1, 0, 1] ck = [] result = ..
[알고리즘] 백준 16956 늑대와 양 / python https://www.acmicpc.net/problem/16956 16956번: 늑대와 양 크기가 R×C인 목장이 있고, 목장은 1×1 크기의 칸으로 나누어져 있다. 각각의 칸에는 비어있거나, 양 또는 늑대가 있다. 양은 이동하지 않고 위치를 지키고 있고, 늑대는 인접한 칸을 자유롭게 이동할 수 있다. 두 칸이 인접하다는 것은 두 칸이 변을 공유하는 경우이다. 목장에 울타리를 설치해 늑대가 양이 있는 칸으로 갈 수 없게 하려고 한다. 늑대는 울타리가 있는 칸으로는 이동할 수 없다. 울타리를 설치해보자. www.acmicpc.net R, C = map(int, input().split()) MAP = [list(input()) for _ in range(R)] dx, dy = [-1, 0, 1, 0], ..
[알고리즘] 백준 2484 주사위 네개 / python https://www.acmicpc.net/problem/2484 2484번: 주사위 네개 첫째 줄에는 참여하는 사람 수 N이 주어지고 그 다음 줄부터 N개의 줄에 사람들이 주사위를 던진 4개의 눈이 빈칸을 사이에 두고 각각 주어진다. www.acmicpc.net def func(lst): if len(set(lst)) == 1: return 50000 + lst[0] * 5000 if len(set(lst)) == 2: if lst[1] == lst[2]: return 10000 + lst[1] * 1000 else: return 2000 + lst[0] * 500 + lst[2] * 500 for i in range(3): if lst[i] == lst[i+1]: return 1000 + lst[i]..
[알고리즘] 백준 2480 주사위 세개 / python https://www.acmicpc.net/problem/2480 2480번: 주사위 세개 1에서부터 6까지의 눈을 가진 3개의 주사위를 던져서 다음과 같은 규칙에 따라 상금을 받는 게임이 있다. 같은 눈이 3개가 나오면 10,000원+(같은 눈)*1,000원의 상금을 받게 된다. 같은 눈이 2개만 나오는 경우에는 1,000원+(같은 눈)*100원의 상금을 받게 된다. 모두 다른 눈이 나오는 경우에는 (그 중 가장 큰 눈)*100원의 상금을 받게 된다. 예를 들어, 3개의 눈 3, 3, 6이 주어지면 상금은 1,000+3*100으로 계 www.acmicpc.net N = sorted(list(map(int, input().split()))) if len(set(N)) == 1: print(10000 + ..
[알고리즘] 백준 9037 The candy war / python https://www.acmicpc.net/problem/9037 9037번: The candy war 입력은 표준입력(standard input)을 통해 받아들인다. 입력의 첫 줄에는 테스트 케이스의 개수 T가 주어진다. 각각의 테스트 케이스의 첫 줄에는 아이의 인원 N (1 ≤ N ≤ 10)이 주어지고 그 다음 줄에는 각 아이들이 초기에 가지고 있는 사탕의 개수 Ci ( 1 ≤ i ≤ N, 1 ≤ Ci ≤ 30)가 주어진다. 분배 시 C1의 오른쪽에는 C2가, C2의 오른쪽에는 C3가…… 같은 식으로 앉게 되며 CN의 오른쪽에는 C1이 앉게 된다. www.acmicpc.net def check(N, C): for i in range(N): if C[i] %2 == 1: C[i] += 1 return ..
[알고리즘] 백준 17224 APC는 왜 서브태스크 대회가 되었을까? / python https://www.acmicpc.net/problem/17224 17224번: APC는 왜 서브태스크 대회가 되었을까? 2019년 올해도 어김없이 아주대학교 프로그래밍 경시대회(Ajou Programming Contest, APC)가 열렸다! 올해 새롭게 APC의 총감독을 맡게 된 준표는 대회 출제 과정 중 큰 고민에 빠졌다. APC에 참가하는 참가자들이 너무 다양해 대회 문제 난이도 설정이 너무 어렵기 때문이다. APC는 프로그래밍 대회에 익숙하지 않은 학생들과 전공생이 아닌 학생들도 대거 참가하기 때문에 모두가 풀거나 도전할 수 있는 난이도 커브를 갖춰야 한다. 또한 www.acmicpc.net N, L, K = map(int, input().split()) problem = [[0]*2 for ..