wockd9600의 등록된 링크

 wockd9600로 등록된 네이버 블로그 포스트 수는 62건입니다.

[Python] 백준 5073번 : 삼각형과 세 변 (Bronze 3) - 사과나무 심기 [내부링크]

[Python] 백준 5073번 : 삼각형과 세 변 문제 링크 16234번: 인구 이동 (acmicpc.net) 16234번: 인구 이동 문제 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모든 나라는 1×1 크기이기 때문에, 모든 국경선은 정사각형 형태이다. 오늘부터 인구 이동이 시작되는 날이다. 인구 이동은 하루 동안 다음과 같이 진행되고, 더 이상 아래 방법에 의해 인구 이동이 없을 때까지 지속된다. 국경선을 공유하는 두 나라의 인구 차이가 L명 이상, R명 이하라면, 두 나라가 공유하는 국경선을 오늘 하루 ... www.acmicpc.net 문제 요약 주어지는 세 변의 길이로 삼각형을 만들 수 있는지 만들 수 있다면 어떤 삼각형인지 출력하면 된다. 정삼각형(Equilateral), 이등변삼각형(Isosceles), 삼각형(

[Python] 백준 17140번 : 이차원 배열과 연산 - Gold 4 [내부링크]

[Python] 백준 17140번 : 이차원 배열과 연산 구현 정렬 시뮬레이션 문제 링크 17140번: 이차원 배열과 연산 (acmicpc.net) 17140번: 이차원 배열과 연산 문제 크기가 3×3인 배열 A가 있다. 배열의 인덱스는 1부터 시작한다. 1초가 지날때마다 배열에 연산이 적용된다. R 연산: 배열 A의 모든 행에 대해서 정렬을 수행한다. 행의 개수 ≥ 열의 개수인 경우에 적용된다. C 연산: 배열 A의 모든 열에 대해서 정렬을 수행한다. 행의 개수 < 열의 개수인 경우에 적용된다. 한 행 또는 열에 있는 수를 정렬하려면, 각각의 수가 몇 번 나왔는지 알아야 한다. 그 다음, 수의 등장 횟수가 커지는 순으로, 그러한 것이 여러가지면 수가 커지는 순으로 정렬한다. 그 다음에는 배열 A에 정렬된 결과... www.acmicpc.net 해결 Counter함수와 Zip 함수를 알면 훨씬 간단하게 풀수 있다. 나는 사용하지 않고 풀었다. (원리는 같음) # code r, c,

[Python] 백준 17142번 : 연구소 3 - Gold 4 [내부링크]

[Python] 백준 17142번 : 연구소 3 그래프 이론 브루트포스 알고리즘 그래프 탐색 너비 우선 탐색 문제 링크 17142번: 연구소 3 (acmicpc.net) 17142번: 연구소 3 문제 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고, 활성 상태인 바이러스는 상하좌우로 인접한 모든 빈 칸으로 동시에 복제되며, 1초가 걸린다. 승원이는 연구소의 바이러스 M개를 활성 상태로 변경하려고 한다. 연구소는 크기가 N×N인 정사각형으로 나타낼 수 있으며, 정사각형은 1×1 크기의 정사각형으로 나누어져 있다. 연구소는 빈 칸, 벽, 바이러스로 이루어져 있으며, 벽은 칸 하나를 가득 차지한다... www.acmicpc.net 해결 활성 바이러스의 경우의 수를 구하는데 combinations 함수를 사용했다. 바이러스 복제를 끝내고 최소 시간을 구할 때

[Python] 백준 1331번 : 나이트 투어 - Silver 5 [내부링크]

[Python] 백준 1331번 : 나이트 투어 구현 시뮬레이션 문제 링크 1331번: 나이트 투어 (acmicpc.net) 1331번: 나이트 투어 문제 나이트 투어는 체스판에서 나이트가 모든 칸을 정확히 한 번씩 방문하며, 마지막으로 방문하는 칸에서 시작점으로 돌아올 수 있는 경로이다. 다음 그림은 나이트 투어의 한 예이다. 영식이는 6×6 체스판 위에서 또 다른 나이트 투어의 경로를 찾으려고 한다. 체스판의 한 칸은 A, B, C, D, E, F 중에서 하나와 1, 2, 3, 4, 5, 6 중에서 하나를 이어 붙인 것으로 나타낼 수 있다. 영식이의 나이트 투어 경로가 주어질 때, 이것이 올바른 것이면 Valid, 올바르지 않으면 Invalid를 출력하는 프로그램을 작성하시오... www.acmicpc.net 해결 나이트가 모든 칸을 방문했는지, 움직일 수 있는 칸으로 움직였는지, 마지막 도착지점에서 처음 위치로 갈 수 있는지 확인한다. # code numIndex = {'A':

[Python] 백준 1347번 : 미로 만들기 - Silver 3 [내부링크]

[Python] 백준 1347번 : 미로 만들기 구현 시뮬레이션 문제 링크 1347번: 미로 만들기 (acmicpc.net) 1347번: 미로 만들기 문제 홍준이는 미로 안의 한 칸에 남쪽을 보며 서있다. 미로는 직사각형 격자모양이고, 각 칸은 이동할 수 있거나, 벽을 포함하고 있다. 모든 행과 열에는 적어도 하나의 이동할 수 있는 칸이 있다. 홍준이는 미로에서 모든 행과 열의 이동할 수 있는 칸을 걸어다녔다. 그러면서 자신의 움직임을 모두 노트에 쓰기로 했다. 홍준이는 미로의 지도를 자기 노트만을 이용해서 그리려고 한다. 입력으로 홍준이가 적은 내용을 나타내는 문자열이 주어진다. 각 문자 하나는 한 번의 움직임을 말한다. ‘F’는 앞으로 한 칸 움직인 것이고, ‘L'과 ’R'은... www.acmicpc.net 해결 1. 주어진 행동을 구현한다. (전진, 좌우 회전) 전진할 때 해당 위치를 기억하면 왔던 길을 알 수 있다. route.append((x, y)) 2. 최초 위치를 0

[Python] 프로그래머스 : 이중우선순위큐 - level 3 [내부링크]

[Python] 프로그래머스 : 이중우선순위큐 힙(Heap) 문제 링크 코딩테스트 연습 - 이중우선순위큐 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 이중우선순위큐 이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다. 명령어 수신 탑(높이) I 숫자 큐에 주어진 숫자를 삽입합니다. D 1 큐에서 최댓값을 삭제합니다. D -1 큐에서 최솟값을 삭제합니다. 이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요. 제한사항 operations는 길이가 1 이상 1,000,000 이하인 문자열 배열입니다. operations의 원... programmers.co.kr 해결 필요에 따라 최대값과 최소값을 리턴하는 우선순위큐(특정값을 먼저 리턴하는 큐)를 만든다. 파이썬에 있는 heapq 라이브러

[Python] 프로그래머스 : 섬 연결하기 - level 3 [내부링크]

[Python] 프로그래머스 : 섬 연결하기 탐욕법(Greedy) 문제 링크 코딩테스트 연습 - 섬 연결하기 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 섬 연결하기 n개의 섬 사이에 다리를 건설하는 비용(costs)이 주어질 때, 최소의 비용으로 모든 섬이 서로 통행 가능하도록 만들 때 필요한 최소 비용을 return 하도록 solution을 완성하세요. 다리를 여러 번 건너더라도, 도달할 수만 있으면 통행 가능하다고 봅니다. 예를 들어 A 섬과 B 섬 사이에 다리가 있고, B 섬과 C 섬 사이에 다리가 있으면 A 섬과 C 섬은 서로 통행 가능합니다. 제한사항 섬의 개수 n은 1 이상 100 이하입니다. costs의 길이는 ((n-1) * n) / 2 이하입니다. 임의의 i에 대해, costs... programmers.co.kr 해결 마침 최근에 크루스칼 알고리즘을 공부해서 풀 수 있었다. 크루스칼 알고리즘 링크 18. 크루스칼 알고리즘(Kruskal

[Python] 백준 1422번 : 숫자의 신 - Platinum 5 [내부링크]

[Python] 백준 1422번 : 숫자의 신 그리디 알고리즘 정렬 문제 링크 1422번: 숫자의 신 (acmicpc.net) 1422번: 숫자의 신 문제 숫자의 신은 여러명이 있지만, 그 중에 자연수의 신은 오세준이다. 오세준은 자연수의 신으로 오래오래 살다가 어느 날 음수의 신과 전쟁을 하게 되었다. 오세준은 음수의 신 이다솜을 이기기위해서 큰 숫자를 만들기로 했다. 오세준은 지금 K개의 자연수를 가지고 있다. 오세준은 K개의 수 중에 정확하게 N개의 수를 뽑아내서 그 수를 붙여서 만들 수 있는 수중에 가장 큰 수를 만들고자 한다. 같은 수를 여러 번 이용해도 된다. 단, 모든 수는 적어도 한 번은 이용되어야 한다. 오세준이 현재 가지고 있는 K개의 수가 주어졌을 때, 이 수... www.acmicpc.net 해결 k개의 수 중에 n개의 수를 뽑아 붙여 가장 큰 수를 만든다. 모든 수는 적어도 한 번은 이용해야 한다. ex) k = 3, n = 4, k_list = [11111,

[Python] 백준 21608번 : 상어 초등학교 - Silver 1 [내부링크]

[Python] 백준 21608번 : 상어 초등학교 구현 문제 링크 21608번: 상어 초등학교 (acmicpc.net) 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N 2 명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N 2 번까지 번호가 매겨져 있고, (r, c)는 r행 c열을 의미한다. 교실의 가장 왼쪽 윗 칸은 (1, 1)이고, 가장 오른쪽 아랫 칸은 (N, N)이다. 선생님은 학생의 순서를 정했고, 각 학생이 좋아하는 학생 4명도 모두 조사했다. 이제 다음과 같은 규칙을 이용해 정해진 순서대로 학생의 자리를 정하려고 한다. 한 칸에는 학생 한 명의 자리만 ... www.acmicpc.net 해결 1. 비어있는 칸 중에서 좋아하는 학생이 인접한 칸에 가장 많은 칸으로 자리를 정한다. 2. 1을 만족하는 칸이 여러 개이면, 인접한 칸 중에서 비어있는 칸이 가장 많

[Python] 백준 21610번 : 마법사 상어와 비바라기 - Gold 5 [내부링크]

[Python] 백준 21610번 : 마법사 상어와 비바라기 구현 시뮬레이션 문제 링크 21610번: 마법사 상어와 비바라기 (acmicpc.net) 21610번: 마법사 상어와 비바라기 문제 마법사 상어는 파이어볼 , 토네이도 , 파이어스톰 , 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기를 크기가 N×N인 격자에서 연습하려고 한다. 격자의 각 칸에는 바구니가 하나 있고, 바구니는 칸 전체를 차지한다. 바구니에 저장할 수 있는 물의 양에는 제한이 없다. (r, c)는 격자의 r행 c열에 있는 바구니를 의미하고, A[r][c]는 (r, c)에 있는 바구니에 저장되어 있는 물의 양을 의미한다. 격자의 가장 왼쪽 윗 칸은 (1... www.acmicpc.net 해결 1. 구름이 계속 생성 반복되기 때문에 queue를 사용했다. cloud = deque([]) -list에 0, 1을 저장해서 구현할

[Python] 백준 14499번 : 주사위 굴리기 - Gold 4 [내부링크]

[Python] 백준 14499번 : 주사위 굴리기 구현 시뮬레이션 문제 링크 14499번: 주사위 굴리기 (acmicpc.net) 14499번: 주사위 굴리기 문제 크기가 N×M인 지도가 존재한다. 지도의 오른쪽은 동쪽, 위쪽은 북쪽이다. 이 지도의 위에 주사위가 하나 놓여져 있으며, 주사위의 전개도는 아래와 같다. 지도의 좌표는 (r, c)로 나타내며, r는 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수이다. 2 4 1 3 5 6 주사위는 지도 위에 윗 면이 1이고, 동쪽을 바라보는 방향이 3인 상태로 놓여져 있으며, 놓여져 있는 곳의 좌표는 (x, y) 이다. 가장 처음에 주사위에는 모든 면에 0이 적혀져 있다. 지도의 각 칸에는 정수가 하나씩 쓰여져 있... www.acmicpc.net 해결 1. 리스트를 이용해서 주사위를 만든다. (1로 채워진 부분이 주사위고 나머지 0부분은 사용하지 않는다.)  [0, 1, 0]  [1, 1, 1]  [0, 1, 0]

[Python] 백준 15684번 : 사다리 조작 - Gold 4 [내부링크]

[Python] 백준 15684번 : 사다리 조작 구현 브루트포스 알고리즘 백트래킹 문제 링크 15684번: 사다리 조작 (acmicpc.net) 15684번: 사다리 조작 문제 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선이 같은 위치를 갖는다. 아래 그림은 N = 5, H = 6 인 경우의 그림이고, 가로선은 없다. 초록선은 세로선을 나타내고, 초록선과 점선이 교차하는 점은 가로선을 놓을 수 있는 점이다. 가로선은 인접한 두 세로선을 연결해야 한다. 단, 두 가로선이 연속하거나 서로 접하면 안 된다. 또, 가로선은 점선 위에 있어야 한다. 위의 그림에는 가... www.acmicpc.net 해결 ladder에 사다리가 놓여있는지 체크하면서 놓을 수 있는 모든 경우의 수에 놓는다. 나는 1은 우측으로 가는 사다리 -1은 좌측으로 가는 사다

[Python] 백준 15685번 : 드래곤 커브 - Gold 4 [내부링크]

[Python] 백준 15685번 : 드래곤 커브 구현 시뮬레이션 문제 링크 15685번: 드래곤 커브 (acmicpc.net) 15685번: 드래곤 커브 문제 드래곤 커브는 다음과 같은 세 가지 속성으로 이루어져 있으며, 이차원 좌표 평면 위에서 정의된다. 좌표 평면의 x축은 → 방향, y축은 ↓ 방향이다. 시작 점 시작 방향 세대 0세대 드래곤 커브는 아래 그림과 같은 길이가 1인 선분이다. 아래 그림은 (0, 0)에서 시작하고, 시작 방향은 오른쪽인 0세대 드래곤 커브이다. 1세대 드래곤 커브는 0세대 드래곤 커브를 끝 점을 기준으로 시계 방향으로 90도 회전시킨 다음 0세대 드래곤 커브의 끝 점에 붙인 것이다. 끝 점이란 시작 점에서 선분을 타고 이동했을 때, 가장 먼 거리에 ... www.acmicpc.net 해결 주어진 드래곤 커브를 좌표 평면에 그리고 네 꼭짓점이 모두 드래곤 커브의 일부인 정사각형 수를 구하면 된다. 코드 if board[y][x] and board[y

[Python] 백준 15486번 : 퇴사 2 - Silver 1 [내부링크]

[Python] 백준 15486번 : 퇴사 2 다이나믹 프로그래밍 문제 링크 15486번: 퇴사 2 (acmicpc.net) 15486번: 퇴사 2 문제 상담원으로 일하고 있는 백준이는 퇴사를 하려고 한다. 오늘부터 N+1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 한다. 백준이는 비서에게 최대한 많은 상담을 잡으라고 부탁을 했고, 비서는 하루에 하나씩 서로 다른 사람의 상담을 잡아놓았다. 각각의 상담은 상담을 완료하는데 걸리는 기간 T i 와 상담을 했을 때 받을 수 있는 금액 P i 로 이루어져 있다. N = 7인 경우에 다음과 같은 상담 일정표를 보자. 1일 2일 3일 4일 5일 6일 7일 T i 3 5 1 1 2 4 2 P i 10 20... www.acmicpc.net 해결 임의의 i일에 상담했다고 가정했을 때 얻는 수익이 i일에 시작한 상담이 마친 일정의 t일의 원래 얻는 수익보다 크면 i일에 상담한다. dp[t] = dp[i] + cou

[Python] 백준 1063번 : 킹 - Silver 4 [내부링크]

[Python] 백준 1063번 : 킹 구현 시뮬레이션 문제 링크 1063번: 킹 (acmicpc.net) 1063번: 킹 문제 8*8크기의 체스판에 왕이 하나 있다. 킹의 현재 위치가 주어진다. 체스판에서 말의 위치는 다음과 같이 주어진다. 알파벳 하나와 숫자 하나로 이루어져 있는데, 알파벳은 열을 상징하고, 숫자는 행을 상징한다. 열은 가장 왼쪽 열이 A이고, 가장 오른쪽 열이 H까지 이고, 행은 가장 아래가 1이고 가장 위가 8이다. 예를 들어, 왼쪽 아래 코너는 A1이고, 그 오른쪽 칸은 B1이다. 킹은 다음과 같이 움직일 수 있다. R : 한 칸 오른쪽으로 L : 한 칸 왼쪽으로 B : 한 칸 아래로 T : 한 칸 위로 RT : 오른쪽 위 대각... www.acmicpc.net 해결 2차원 리스트로 체스판을 만들고 주어진 행동을 하면서 킹과 돌을 움직이면 직관적이다. 하지만 킹과 돌의 위치만 알면 되기 때문에 나는 아래의 1차원 리스트 두 개를 사용해서 구현했다. xList

[Python] 백준 16235번 : 나무 재테크 - Gold 4 [내부링크]

[Python] 백준 16235번 : 나무 재테크 구현 시뮬레이션 문제 링크 16235번: 나무 재테크 (acmicpc.net) 16235번: 나무 재테크 문제 부동산 투자로 억대의 돈을 번 상도는 최근 N×N 크기의 땅을 구매했다. 상도는 손쉬운 땅 관리를 위해 땅을 1×1 크기의 칸으로 나누어 놓았다. 각각의 칸은 (r, c)로 나타내며, r은 가장 위에서부터 떨어진 칸의 개수, c는 가장 왼쪽으로부터 떨어진 칸의 개수이다. r과 c는 1부터 시작한다. 상도는 전자통신공학과 출신답게 땅의 양분을 조사하는 로봇 S2D2를 만들었다. S2D2는 1×1 크기의 칸에 들어있는 양분을 조사해 상도에게 전송하고, 모든 칸에 대해서 조사를 한다. 가장 처음에 양분은 모든 칸에 5만큼 들어있다.... www.acmicpc.net 해결 땅의 심어진 나무의 정보를 저장한 큐 리스트를 만들어서 각 계절에 주어진 행동을 실행한다. 제한 시간이 0.3초라 될까 싶었는데 다행히 잘 됐다. # code f

[Python] 백준 17144번 : 미세먼지 안녕! - Gold 4 [내부링크]

[Python] 백준 17144번 : 미세먼지 안녕! 구현 시뮬레이션 문제 링크 17144번: 미세먼지 안녕! (acmicpc.net) 17144번: 미세먼지 안녕! 문제 미세먼지를 제거하기 위해 구사과는 공기청정기를 설치하려고 한다. 공기청정기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기의 칸으로 나눴다. 구사과는 뛰어난 코딩 실력을 이용해 각 칸 (r, c)에 있는 미세먼지의 양을 실시간으로 모니터링하는 시스템을 개발했다. (r, c)는 r행 c열을 의미한다. 공기청정기는 항상 1번 열에 설치되어 있고, 크기는 두 행을 차지한다. 공기청정기가 설치되어 있지 않은 칸에는 미세먼지가 있고, (r, c)에 있는 미세먼지의 양은 A r,c 이다. 1초 동... www.acmicpc.net 해결 주의할점. 1. 미세먼지를 확산시킬 때 이전에 확산되어 추가된 미세먼지가 다른 확산에 영향을 주지 않기 위해서 확산시킬 양을 구해놔야한다. 예를 들어

[Python] 백준 14719번 : 빗물 - Gold 5 [내부링크]

[Python] 백준 14719번 : 빗물 구현 문제 링크 14719번: 빗물 (acmicpc.net) 14719번: 빗물 문제 2차원 세계에 블록이 쌓여있다. 비가 오면 블록 사이에 빗물이 고인다. 비는 충분히 많이 온다. 고이는 빗물의 총량은 얼마일까? 입력 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치부터 차례대로 W개 주어진다. 따라서 블록 내부의 빈 공간이 생길 수 없다. 또 2차원 세계의 바닥은 항상 막혀있다고 가정하여도 좋다. 출력 2차원 세계에서는 한 칸의 용량은 1이다. ... www.acmicpc.net 해결 높이별로 물이 얼마나 고였는지 확인한다. (0~h) 임의의 높이 h에 왼쪽 블럭이 있는지 확인하고 있다면 이후로 오른쪽 블럭을 만날 때마다 고인 빗물을 더해준다. # code h, w = map

[Python] 백준 2529번 : 부등호 - silver 2 [내부링크]

[Python] 백준 2529 : 부등호 브루트 포스 백트래킹 문제 링크 2529번: 부등호 (acmicpc.net) 2529번: 부등호 2529번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 부등호 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 256 MB 15804 8380 5665 51.313% 문제 두 종류의 부등호 기호 ‘<’와 ‘>’가 k개 나열된 순서열 A가 있다. 우리는 이 부등호 기호 앞뒤에 서로 다른 한 자릿수 숫자를 넣어서 모든 부등호 관계를 만족시키려고 한다. 예를 들어, 제시된 부등호 순서열 A가 다음과 같다고 하자. A ⇒ < < < > < < > < > 부등호 기호 앞뒤에 넣을 수 있는 숫자는 0부터 9까지의 정수이... www.acmicpc.net 해결 dfs로 하나씩 대입하면서 모든 경우의 수를 검사한다. # code def dfs(level, ans): if not level: for i in range(10): visited[

[Python] 백준 2636번 : 치즈 - Gold 5 [내부링크]

[Python] 백준 2636번 : 치즈 구현 그래프 이론 그래프 탐색 너비 우선 탐색 시뮬레이션 문제 링크 2636번: 치즈 (acmicpc.net) 2636번: 치즈 문제 아래 <그림 1>과 같이 정사각형 칸들로 이루어진 사각형 모양의 판이 있고, 그 위에 얇은 치즈(회색으로 표시된 부분)가 놓여 있다. 판의 가장자리(<그림 1>에서 네모 칸에 X친 부분)에는 치즈가 놓여 있지 않으며 치즈에는 하나 이상의 구멍이 있을 수 있다. 이 치즈를 공기 중에 놓으면 녹게 되는데 공기와 접촉된 칸은 한 시간이 지나면 녹아 없어진다. 치즈의 구멍 속에는 공기가 없지만 구멍을 둘러싼 치즈가 녹아서 구멍이 열리면 구멍 속으로 공기가 들어가게 된다. <그림 1>의 경우, 치즈의 구멍을 둘러싼 치즈는 녹지 않고 ‘... www.acmicpc.net 해결 처음엔 치즈를 기준으로 어떻게 풀지 고민했다. 치즈가 닫혀있는지 여부를 판단해야 했고 문제가 너무 복잡했다. 그래서 한참 생각하다가 공기를 기준으로

[Python] 백준 1826번 : 연료 채우기 - Gold 3 [내부링크]

[Python] 백준 1826번 : 연료 채우기 자료 구조 그리디 알고리즘 정렬 우선순위 큐 문제 링크 1826번: 연료 채우기 (acmicpc.net) 1826번: 연료 채우기 1826번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 연료 채우기 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 128 MB 4258 1224 932 28.881% 문제 성경이는 트럭을 정글 속에서 운전하다가 트럭의 연료탱크에 갑자기 구멍이 나서 1km를 가는데 1L의 연료가 새 나가게 되었다. 이것을 고치기 위해서는 가장 가까운 마을에 가야 한다. 그런데 그냥 가다가는 중간에 연료가 다 빠질 수가 있다. 다행스럽게도 정글 곳곳에 연료를 채울 수 있는 주유소가 N개 있다. 그런데 정글 속에서 중간에 차를 멈... www.acmicpc.net 해결 주유소들을 거리 순으로 정렬한다. 현재 연료로 갈 수 있는 주유소들을 연료량 우선으로 큐에 넣는다. (주유소에 방문할지 안 할지는 아직 결

[Python] 백준 13458번 : 시험 감독 - Bronze 2 [내부링크]

[Python] 백준 13458번 : 시험 감독 수학 사칙연산 문제 링크 13458번: 시험 감독 (acmicpc.net) 13458번: 시험 감독 문제 총 N개의 시험장이 있고, 각각의 시험장마다 응시자들이 있다. i번 시험장에 있는 응시자의 수는 A i 명이다. 감독관은 총감독관과 부감독관으로 두 종류가 있다. 총감독관은 한 시험장에서 감시할 수 있는 응시자의 수가 B명이고, 부감독관은 한 시험장에서 감시할 수 있는 응시자의 수가 C명이다. 각각의 시험장에 총감독관은 오직 1명만 있어야 하고, 부감독관은 여러 명 있어도 된다. 각 시험장마다 응시생들을 모두 감시해야 한다. 이때, 필요한 감독관 수의 최솟값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 시험장의 개수 N(1... www.acmicpc.net 해결 시험장에 총감독관을 배치한 뒤 시험장에 사람이 많아서 혼자 감독할 수 없다면 부족한 만큼 부감독관을 배치한다. 이때 사람의 수가 음수가 되지 않게 조심한다. # code

[Python] 백준 14891번 : 톱니바퀴 - Silver 1 [내부링크]

[Python] 백준 14891번 : 톱니바퀴 구현 시뮬레이션 문제 링크 14891번: 톱니바퀴 (acmicpc.net) 14891번: 톱니바퀴 문제 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴가 1번, 그 오른쪽은 2번, 그 오른쪽은 3번, 가장 오른쪽 톱니바퀴는 4번이다. 이때, 톱니바퀴를 총 K번 회전시키려고 한다. 톱니바퀴의 회전은 한 칸을 기준으로 한다. 회전은 시계 방향과 반시계 방향이 있고, 아래 그림과 같이 회전한다. 톱니바퀴를 회전시키려면, 회전시킬 톱니바퀴와 회전시킬 방향을 결정해야 한다. 톱니바퀴가 회전할... www.acmicpc.net 해결 톱니바퀴의 정보와 회전 정보를 받고 그대로 반영한다. 이때 1번이 시계면 2번은 반시계 3번은 시계 방향으로 회전해야 하고 다른 톱니바퀴에 영향을 미칠 때는 한 번에 회전해

[Python] 백준 14500번 : 테트로미노 - Gold 5 [내부링크]

[Python] 백준 14500번 : 테트로미노 구현 브루트포스 알고리즘 문제 링크 14500번: 테트로미노 (acmicpc.net) 14500번: 테트로미노 문제 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변끼리 연결되어 있어야 한다. 즉, 꼭짓점과 꼭짓점만 맞닿아 있으면 안 된다. 정사각형 4개를 이어 붙인 폴리오미노는 테트로미노라고 하며, 다음과 같은 5가지가 있다. 아름이는 크기가 N×M인 종이 위에 테트로미노 하나를 놓으려고 한다. 종이는 1×1 크기의 칸으로 나누어져 있으며, 각각의 칸에는 정수가 하나 쓰여 있다. 테트로미노 하나를 적... www.acmicpc.net 해결 모든 테트로미노의 모양을 함수로 만들어서 모든 종이 위에 놓아보는 식으로 만들었다. 단순 노가다여서 썩 좋은 방법 같지는 않다. 다시 한다면 4x1, 2x2와

[Python] 백준 15683번 : 감시 - Gold 5 [내부링크]

[Python] 백준 15683번 : 감시 구현 브루트포스 알고리즘 시뮬레이션 문제 링크 15683번: 감시 (acmicpc.net) 15683번: 감시 문제 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감시할 수 있는 방법은 다음과 같다. 1번 2번 3번 4번 5번 1번 CCTV는 한 쪽 방향만 감시할 수 있다. 2번과 3번은 두 방향을 감시할 수 있는데, 2번은 감시하는 방향이 서로 반대방향이어야 하고, 3번은 직각 방향이어야 한다. 4번은 세 방향, 5번은 네 방향을 감시할 수 있다. CCTV는 감시할 수 있는 방향에 있... www.acmicpc.net 해결 dfs에 deep copy를 이용하여 해결했다. cctv를 위치를 구한 뒤 cctv가 볼 수 있는 방향을 기준으로 dfs를 돌린다. dfs에서 다음 depth로 갈

[Python] 백준 20055번 : 컨베이어 벨트 위의 로봇 - Gold 5 [내부링크]

[Python] 백준 20055번 : 컨베이어 벨트 위의 로봇 구현 시뮬레이션 문제 링크 20055번: 컨베이어 벨트 위의 로봇 (acmicpc.net) 20055번: 컨베이어 벨트 위의 로봇 문제 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부터 2N까지의 번호가 매겨져 있다. 벨트가 한 칸 회전하면 1번부터 2N-1번까지의 칸은 다음 번호의 칸이 있는 위치로 이동하고, 2N번 칸은 1번 칸의 위치로 이동한다. i번 칸의 내구도는 A i 이다. 위의 그림에서 1번 칸이 있는 위치를 " 올리는 위치 ", N번 칸이 있는 위치를 " 내리는 위치 "라고 한다. 컨베이어 벨트에 ... www.acmicpc.net 해결 파이썬은 deque에 있는 rotate 함수를 사용하면 쉽게 풀 수 있다. 나는 그런 함수가 있는지 몰랐다.. 그래서 ind

[Python] 프로그래머스 : 뉴스 클러스터링 - level 2 [내부링크]

[Python] 프로그래머스 : 뉴스 클러스터링 2018 KAKAO BLIND RECRUITMENT 문제 링크 코딩테스트 연습 - [1차] 뉴스 클러스터링 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - [1차] 뉴스 클러스터링 뉴스 클러스터링 여러 언론사에서 쏟아지는 뉴스, 특히 속보성 뉴스를 보면 비슷비슷한 제목의 기사가 많아 정작 필요한 기사를 찾기가 어렵다. Daum 뉴스의 개발 업무를 맡게 된 신입사원 튜브는 사용자들이 편리하게 다양한 뉴스를 찾아볼 수 있도록 문제점을 개선하는 업무를 맡게 되었다. 개발의 방향을 잡기 위해 튜브는 우선 최근 화제가 되고 있는 "카카오 신입 개발자 공채" 관련 기사를 검색해보았다. 카카오 첫 공채..'블라인드' 방식 채용 카카오, 합병 후 첫 공채.. 블라인드 전형으로 개발자 채용 카카오, 블라인드 전형으로 신입 개... programmers.co.kr 해결 제시된 문제를 따라가며 풀면된다. isalpha와 set의 연

[Python] 프로그래머스 : k진수에서 소수 개수 구하기 - level 2 [내부링크]

[Python] 프로그래머스 : k진수에서 소수 개수 구하기 2022 KAKAO BLIND RECRUITMENT 문제 링크 코딩테스트 연습 - k진수에서 소수 개수 구하기 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - k진수에서 소수 개수 구하기 문제 설명 양의 정수 n 이 주어집니다. 이 숫자를 k 진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0 처럼 소수 양쪽에 0이 있는 경우 P0 처럼 소수 오른쪽에만 0이 있고 왼쪽에는 아무것도 없는 경우 0P 처럼 소수 왼쪽에만 0이 있고 오른쪽에는 아무것도 없는 경우 P 처럼 소수 양쪽에 아무것도 없는 경우 단, P 는 각 자릿수에 0을 포함하지 않는 소수입니다. 예를 들어, 101은 P 가 될 수 없습니다. 예를 들어, 437674을 3진수로 바꾸면 211... programmers.co.kr 해결 조건 1. 0P0처럼 소수 양쪽에 0이 있

[Python] 프로그래머스 : 다단계 칫솔 판매 - level 2 [내부링크]

[Python] 프로그래머스 : 다단계 칫솔 판매 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 문제 링크 코딩테스트 연습 - 다단계 칫솔 판매 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, 조직을 운영하던 민호는 조직 내 누가 얼마만큼의 이득을 가져갔는지가 궁금해졌습니다. 예를 들어, 민호가 운영하고 있는 다단계 칫솔 판매 조직이 아래 그림과 같다고 합시다. 민호는 center이며, 파란색 네모는 여덟 명의 판매원을 표시한 것입니다. 각각은 자신을 조직에 참여시킨 추천인에 연결되어 피라미드 식의 구조를 이루고 있습니다. 조직의 이익 분배 ... programmers.co.kr 해결 처음에 문제를 제대로 안 읽어서 dfs로 child node의 모

[Python] 프로그래머스 : 자물쇠와 열쇠 - level 3 [내부링크]

[Python] 프로그래머스 : 자물쇠와 열쇠 구현 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/60059 코딩테스트 연습 - 자물쇠와 열쇠 고고학자인 "튜브" 는 고대 유적지에서 보물과 유적이 가득할 것으로 추정되는 비밀의 문을 발견하였습니다. 그런데 문을 열려고 살펴보니 특이한 형태의 자물쇠 로 잠겨 있었고 문 앞에는 특이한 형태의 열쇠 와 함께 자물쇠를 푸는 방법에 대해 다음과 같이 설명해 주는 종이가 발견되었습니다. 잠겨있는 자물쇠는 격자 한 칸의 크기가 1 x 1 인 N x N 크기의 정사각 격자 형태이고 특이한 모양의 열쇠는 M x M 크기인 정사각 격자 형태로 되어 있습니다. 자물쇠에는 홈이 파여 있고 열쇠 또한 홈과 돌기 부분이 있습니다. 열쇠는 회전과 이... programmers.co.kr 해결 알고리즘 스터디 할 때 풀었던 문제라 아이디어가 머릿속에 이미 있었고 함수 rotate_90만 구글에 검색 후 복붙

[Python] 프로그래머스 : 셔틀버스 - level 3 [내부링크]

[Python] 프로그래머스 : 셔틀버스 2018 KAKAO BLIND RECRUITMENT 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/17678 코딩테스트 연습 - [1차] 셔틀버스 셔틀버스 카카오에서는 무료 셔틀버스를 운행하기 때문에 판교역에서 편하게 사무실로 올 수 있다. 카카오의 직원은 서로를 '크루'라고 부르는데, 아침마다 많은 크루들이 이 셔틀을 이용하여 출근한다. 이 문제에서는 편의를 위해 셔틀은 다음과 같은 규칙으로 운행한다고 가정하자. 셔틀은 09:00 부터 총 n 회 t 분 간격으로 역에 도착하며, 하나의 셔틀에는 최대 m 명의 승객이 탈 수 있다. 셔틀은 도착했을 때 도착한 순간에 대기열에 선 크루까지 포함해서 대기 순서대로 태우고 바로 출발한다. 예를 들어 09:00 에 도착한 셔틀은 자리가... programmers.co.kr 해결 정말 얌생이 같은 친구다. 마지막 배차의 탄 사람 중 가장 늦게 온 사

[Python] 프로그래머스 : 메뉴 리뉴얼 - level 2 [내부링크]

[Python] 프로그래머스 : 메뉴 리뉴얼 2021 KAKAO BLIND RECRUITMENT 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피 는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 새로운 메뉴를 제공하기로 결정했습니다. 어떤 단품메뉴들을 조합해서 코스요리 메뉴로 구성하면 좋을 지 고민하던 "스카피"는 이전에 각 손님들이 주문할 때 가장 많이 함께 주문한 단품메뉴들을 코스요리 메뉴로 구성하기로 했습니다. 단, 코스요리 메뉴는 최소 2가지 이상의 단품메뉴로 구성하려고 합니다. 또한, 최소 2명 이상의 손님으로부터 주문된 단품메뉴 조합... programmers.co.kr 해결 combinations, dictionary를 사용하면 쉽게 해결할 수

[Python] 프로그래머스 : 괄호 변환 - level 2 [내부링크]

[Python] 프로그래머스 : 괄호 변환 2020 KAKAO BLIND RECRUITMENT 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘" 은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴파일하여 로그를 보니 대부분 소스 코드 내 작성된 괄호가 개수는 맞지만 짝이 맞지 않은 형태로 작성되어 오류가 나는 것을 알게 되었습니다. 수정해야 할 소스 파일이 너무 많아서 고민하던 "콘"은 소스 코드에 작성된 모든 괄호를 뽑아서 올바른 순서대로 배치된 괄호 문자열을 알려주는 프로그램을 다음과 같이 개발하려고 합니다. 용어의 정의 '(' 와 ')... programmers.co.kr 해결 그냥 주어진대로 하면 풀어진다. # code def recursive(s):

[Python] 프로그래머스 : 가사 검색 - level 4 [내부링크]

[Python] 프로그래머스 : 가사 검색 2020 KAKAO BLIND RECRUITMENT 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/60060 코딩테스트 연습 - 가사 검색 친구들로부터 천재 프로그래머로 불리는 "프로도" 는 음악을 하는 친구로부터 자신이 좋아하는 노래 가사에 사용된 단어들 중에 특정 키워드가 몇 개 포함되어 있는지 궁금하니 프로그램으로 개발해 달라는 제안을 받았습니다. 그 제안 사항 중, 키워드는 와일드카드 문자중 하나인 '?'가 포함된 패턴 형태의 문자열을 뜻합니다. 와일드카드 문자인 '?'는 글자 하나를 의미하며, 어떤 문자에도 매치된다고 가정합니다. 예를 들어 "fro??" 는 "frodo" , "front" , "frost" 등에 매치되지만 "frame" , "frozen" 에... programmers.co.kr 해결 이번 문제는 사실상 답지를 보고 이해하는 수준이었다. 그래도 라이브러리 공부

[Python] 프로그래머스 : 실패율 - level 1 [내부링크]

[Python] 프로그래머스 : 실패율 2019 KAKAO BLIND RECRUITMENT 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42889 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직은 쉽게 구현했지만, 실패율을 구하는 부분에서 위기에 빠지고 말았다. 오렐리를 위해 실패율을 구하는 코드를 완성하라. 실패율은 다음과 같이 정의한다. 스테이지에 도달했으나 아직 클리어하... programmers.co.kr 해결 . # code def solution(N, stages): answer = {}

NodeJs Study 1 : Multer - npm [내부링크]

Multer는 multipart/form-data(주로 파일 업로드에 사용) 처리를 위한 node.js 미들웨어다. * 다중 파트( multipart/form-data) 가 아닌 양식을 처리하지 않는다. 이해하기 위해 아래의 예시를 보자 test.html (ui) <form action="/upload" method="post" enctype="multipart/form-data"> <input type="file" name="image" id="image"> <button type="submit">업로드</button> </form> index.js (server) router.post('/upload', (req, res) => { console.log(req.body.image); res.json(1); }); output undefined 클라이언트가 input에 파일을 업로드 하고 button을 눌러 제출(submit)하면 path가 /upload고 method가 post인

[Python] 프로그래머스 : 로또의 최고 순위와 최저 순위 - level 1 [내부링크]

[Python] 프로그래머스 : 로또의 최고 순위와 최저 순위 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/77484?language=python3 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45 (이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호가 일치 3 4개 번호가 일치 4 3개 번호가 일치 5 2개 번호가 일치 6(낙첨) 그 외 로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최... programmers.co.kr 해

[Python] 프로그래머스 : 숫자 문자열과 영단어 - level 1 [내부링크]

[Python] 프로그래머스 : 숫자 문자열과 영단어 2021 카카오 채용연계형 인턴십 문제 링크 코딩테스트 연습 - 숫자 문자열과 영단어 | 프로그래머스 (programmers.co.kr) 코딩테스트 연습 - 숫자 문자열과 영단어 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s 가 매개변수로 주어집니다. s 가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성... programmers.co.kr 해결 영어로 바뀐 숫자를 다시 숫자로 바꿔주면 되는 간단한 문제다. replace를 이

[Python] 백준 11651번 : 좌표 정렬하기 2 - silver 5 [내부링크]

[Python] 백준 11651번 : 좌표 정렬하기 2 정렬 문제 링크 11651번: 좌표 정렬하기 2 (acmicpc.net) 해결 주어지는 xy좌표 데이터를 y좌표 오름차순, 같을 경우 x좌표 오름차순으로 정렬한다. # code arr = sorted([list(map(int, input().split())) for _ in range(int(input()))], key=lambda x: (x[1], x[0])) for a in arr: print(a[0], a[1]) # code(주석) // 입력 받은 xy를 y오름차순, x오름차순으로 정렬한다. arr = sorted([list(map(int, input().split())) for _ in range(int(input()))], key=lambda x: (x[1], x[0])) // 출력 for a in arr: print(a[0], a[1]) 백준 좌표 정렬하기 2 11651번 파이썬 baekjoon 좌표 정렬하기 2 11

[Python] 백준 11650번 : 좌표 정렬하기 - silver 5 [내부링크]

[Python] 백준 11650번 : 좌표 정렬하기 정렬 문제 링크 11650번: 좌표 정렬하기 (acmicpc.net) 11650번: 좌표 정렬하기 11650번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 좌표 정렬하기 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 1 초 256 MB 67916 31830 24392 48.257% 문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 x i 와 y i 가 주어진다. (-100,000 ≤ x... www.acmicpc.net 해결 주어지는 xy좌표 데이터를 x좌표 오름차순, 같을 경우 y좌표 오름차순으로 정렬한다. # code arr = sorted([list(map(int, input().sp

[Python] 백준 2231번 : 분해합 - bronze 2 [내부링크]

[Python] 백준 2231번 : 분해합 브루트포스 알고리즘 문제 링크 2231번: 분해합 (acmicpc.net) 2231번: 분해합 2231번 제출 맞힌 사람 숏코딩 재채점 결과 채점 현황 강의 분해합 다국어 시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율 2 초 192 MB 76669 35190 27847 45.892% 문제 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 된다. 따라서 245는 256의 생성자가 된다. 물론, 어떤 자연수의 경우에는 생성자가 없을 수도 있다. ... www.acmicpc.net 문제 자연수 N의 분해합은 N과 각자리수의 합이다. 예를 들어 245의 분해합은 245 + 2 + 4 + 5 = 256이다. 임의의 자연수 N이 주어졌을 때 N이 분해합인 가장 작은 수

[Python] 백준 16234번 : 인구 이동 - Gold 5 [내부링크]

[Python] 백준 16234번 : 인구 이동 구현 너비 우선 탐색 문제 링크 16234번: 인구 이동 (acmicpc.net) 16234번: 인구 이동 문제 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모든 나라는 1×1 크기이기 때문에, 모든 국경선은 정사각형 형태이다. 오늘부터 인구 이동이 시작되는 날이다. 인구 이동은 하루 동안 다음과 같이 진행되고, 더 이상 아래 방법에 의해 인구 이동이 없을 때까지 지속된다. 국경선을 공유하는 두 나라의 인구 차이가 L명 이상, R명 이하라면, 두 나라가 공유하는 국경선을 오늘 하루 ... www.acmicpc.net 해결 1. 국경이 닿아있고 조건이 맞는 나라를 BFS로 찾는다. 2. 인구 이동 위 패턴을 반복한다. # code from collections import deque

[Python] 프로그래머스 : K번째수 - level 1 [내부링크]

[Python] 프로그래머스 : K번째수 정렬 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명... programmers.co.kr 해결 문제를 그대로 풀면 된다. 주어진 배열을 i~j까지 자른 뒤(1) 정렬하고(2) k번째 수를 answer에 추가(3)해준다.

[Python] 프로그래머스 : 광고 삽입 - level 3 [내부링크]

[Python] 프로그래머스 : 광고 삽입 2021 KAKAO BLIND RECRUITMENT 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/72414 코딩테스트 연습 - 광고 삽입 카카오TV 에서 유명한 크리에이터로 활동 중인 죠르디 는 환경 단체로부터 자신의 가장 인기있는 동영상에 지구온난화의 심각성을 알리기 위한 공익광고를 넣어 달라는 요청을 받았습니다. 평소에 환경 문제에 관심을 가지고 있던 "죠르디"는 요청을 받아들였고 광고효과를 높이기 위해 시청자들이 가장 많이 보는 구간에 공익광고를 넣으려고 합니다. "죠르디"는 시청자들이 해당 동영상의 어떤 구간을 재생했는 지 알 수 있는 재생구간 기록을 구했고, 해당 기록을 바탕으로 공익광고가 삽입될 최적의 위치를 고를 수 있었습니다. 참고로 광고는 재생 중인 ... programmers.co.kr 해결 1. 광고가 재생되는 시간은 초단위로 결정되기 때문에 계산 역시 초단위로 진

[Python] 프로그래머스 : 기둥과 보 설치 - level 3 [내부링크]

[Python] 프로그래머스 : 기둥과 보 설치 2020 KAKAO BLIND RECRUITMENT 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명... programmers.co.kr 해결 문제에 주어진대로 보와 기둥이 설치될 수 있는 조건을 잘 적용한다. 백트

[Python] 프로그래머스 : 신규 아이디 추천 - level 1 [내부링크]

[Python] 프로그래머스 : 신규 아이디 추천 2021 KAKAO BLIND RECRUITMENT 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/72410 코딩테스트 연습 - 신규 아이디 추천 카카오에 입사한 신입 개발자 네오 는 "카카오계정개발팀"에 배치되어, 카카오 서비스에 가입하는 유저들의 아이디를 생성하는 업무를 담당하게 되었습니다. "네오"에게 주어진 첫 업무는 새로 가입하는 유저들이 카카오 아이디 규칙에 맞지 않는 아이디를 입력했을 때, 입력된 아이디와 유사하면서 규칙에 맞는 아이디를 추천해주는 프로그램을 개발하는 것입니다. 다음은 카카오 아이디의 규칙입니다. 아이디의 길이는 3자 이상 15자 이하여야 합니다. 아이디는 알파벳 소문자, 숫자, 빼기( - ), 밑줄( _ ), 마침표( . ) 문자만 사용할 수 있... programmers.co.kr 해결 문제 그대로 풀면 된다. 주석 참고 # code def sol

[Python] 프로그래머스 : 오픈채팅방 - level 2 [내부링크]

[Python] 프로그래머스 : 오픈채팅방 2019 KAKAO BLIND RECRUITMENT 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오픈 채팅방을 개설한 사람을 위해, 다양한 사람들이 들어오고, 나가는 것을 지켜볼 수 있는 관리자창을 만들기로 했다. 채팅방에 누군가 들어오면 다음 메시지가 출력된다. "[닉네임]님이 들어왔습니다." 채팅방에서 누군가 나가면 다음 메시지가 출력된다. "[닉네임]님이 나갔습니다." 채팅방에서 닉네임을 변경하는 방법은 다음과 같이 두 가지이다. 채팅방을 나간 후, 새로... programmers.co.kr 해결 방법 1. 로그를 모두 입력 받은 뒤 유저의 최종 별명을 적용한다. 방법 2

[Python] 프로그래머스 : 모의고사 - level 1 [내부링크]

[Python] 프로그래머스 : 모의고사 완전탐색 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ... 3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 1번 문제부터 마지막 ... programmers.co.kr 해결 포인트 i % len(winner[j]) max_answer = max(answer_num) answer = [i + 1

[Python] LeetCode 1 : Two Sum - level Easy [내부링크]

[Python] LeetCode : Two Sum Array 문제 링크 https://leetcode.com/problems/two-sum/ Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 해결 임의의 리스트와 타겟이 주어질 때, 타겟 값을 만들 수 있는 두 수의 인덱스를 구하면 된다. 2중 for문으로 구현하면 되고 중복 계산을 피하기 위해 j는 i + 1부터 시작하면 된다. j를 0부터 시작할 때와 i + 1부터 시작할 때의 차이는 아래와 같다. list = [1, 2, 3, 4, 5, 6], target = 10 0부터 시작할 때 1 + 1 = 2 (i=0, j=0) 1 + 2 = 3 (i=0, j=1) 1 + 3 = 4 (i=0, j=2) . . 2+

[Python] LeetCode 121 : Best Time to Buy and Sell Stock - level Easy [내부링크]

[Python] LeetCode : Best Time to Buy and Sell Stock Array 문제 링크 https://leetcode.com/problems/best-time-to-buy-and-sell-stock/ Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 해결 시점은 오늘이다. 가장 낮은 가격으로 샀던 날보다 오늘이 싸다면 산다. (if prices[i] < lm: lm = prices[i]) 따라서 오늘 살 수도 있고 안 살 수도 있다. (=오늘이 가장 저렴할 수도, 다른 날이 저렴했을 수도 있다) 오늘 팔아서 얻는 이익이 가장 크다면 판다. (if prices[i] - lm > m: prices[i] - lm) # code class

[Python] 프로그래머스 : 여행경로 [내부링크]

[Python] 프로그래머스 : 여행경로 깊이/너비 우선 탐색(DFS/BFS) 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/43164 코딩테스트 연습 - 여행경로 주어진 항공권을 모두 이용하여 여행경로를 짜려고 합니다. 항상 "ICN" 공항에서 출발합니다. 항공권 정보가 담긴 2차원 배열 tickets가 매개변수로 주어질 때, 방문하는 공항 경로를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 모든 공항은 알파벳 대문자 3글자로 이루어집니다. 주어진 공항 수는 3개 이상 10,000개 이하입니다. tickets의 각 행 [a, b]는 a 공항에서 b 공항으로 가는 항공권이 있다는 의미입니다. 주어진 항공권은 모두 사용해야 합니다. 만일 가능한 경로가 2개 이상... programmers.co.kr 해결 A공항에서 이동할 수 있는 공항이 여러개다. => dictionary의 key, value를

[Python] 백준 1874번 : 스택 수열 [내부링크]

[Python] 백준 1874번 : 스택 수열 1874번: 스택 수열 (acmicpc.net) 1874번: 스택 수열 문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지... www.acmicpc.net 문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간

백준 7562번 : 나이트의 이동 (python) - silver 2 [내부링크]

백준 7562번 나이트의 이동 파이썬 : baekjoon 7562 python 7562번: 나이트의 이동 (acmicpc.net) 7562번: 나이트의 이동 7562번 제출 맞은 사람 숏코딩 재채점 결과 채점 현황 강의 나이트의 이동 출처 다국어 분류 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1 초 256 MB 24261 11588 8707 47.052% 문제 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 있을까? 입력 입력의 첫째 줄에는 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 세 줄로 이루어져 있다. 첫째 줄에는 체... www.acmicpc.net 나이트의 이동 성공출처다국어분류 한국어 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1 초 256 MB 24261 11588 8707 47.052% 문제

[Python] 백준 3055번 : 탈출 [내부링크]

백준 3055번 탈출 파이썬 : baekjoon 3055 python 3055번: 탈출 (acmicpc.net) 3055번: 탈출 문제 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제일 친한 친구인 비버의 굴로 가능한 빨리 도망가 홍수를 피하려고 한다. 티떱숲의 지도는 R행 C열로 이루어져 있다. 비어있는 곳은 '.'로 표시되어 있고, 물이 차있는 지역은 '*', 돌은 'X'로 표시되어 있다. 비버의 굴은 'D'로, 고슴도치의 위치는 'S'로 나타내어져 있다. 매 분마다 고슴도치는 현재 있는 칸과 인접한 네 칸 중 하나로 ... www.acmicpc.net 탈출 성공출처다국어분류 한국어 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1 초 128 MB 28639 9288 6355 31.011% 문제 사악한 암흑의 군주 이민혁은 드디어 마

[Python] 백준 1987번 : 알파벳 [내부링크]

백준 1987번 알파벳 파이썬 : baekjoon 1987 python 1987번: 알파벳 (acmicpc.net) 1987번: 알파벳 1987번 제출 맞은 사람 숏코딩 재채점 결과 채점 현황 강의 알파벳 출처 다국어 분류 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 2 초 256 MB 49715 15687 9575 29.164% 문제 세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다. 말은 상하좌우로 인접한 네 칸 중의 한 칸으로 이동할 수 있는데, 새로 이동한 칸에 적혀 있는 알파벳은 지금까지 지나온 모든 칸에 적혀 있는 알파벳과는 달라야 한다... www.acmicpc.net 알파벳 성공출처다국어분류 한국어 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 2 초 256 MB 49715 15687 9575 29.164% 문제 세로 R칸, 가로 C칸으로 된

[Python] 백준 1039번 : 교환 [내부링크]

백준 1039번 교환 파이썬 : baekjoon 1039 python 1039번: 교환 (acmicpc.net) 1039번: 교환 1039번 제출 맞은 사람 숏코딩 재채점 결과 채점 현황 강의 교환 분류 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 2 초 128 MB 7241 1390 1052 20.169% 문제 0으로 시작하지 않는 정수 N이 주어진다. 이때, M을 정수 N의 자릿수라고 했을 때, 다음과 같은 연산을 K번 수행한다. 1 ≤ i < j ≤ M인 i와 j를 고른다. 그 다음, i번 위치의 숫자와 j번 위치의 숫자를 바꾼다. 이때, 바꾼 수가 0으로 시작하면 안 된다. 위의 연산을 K번 했을 때, 나올 수 있는 수의 최댓값을 구하는 프로... www.acmicpc.net 교환 성공분류 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 2 초 128 MB 7241 1390 1052 20.169% . 문제 두 정수 N과 K가 주어질 때 N의 자릿수를 K번 바

[Python] 백준 1748번 : 수 이어 쓰기 1 [내부링크]

백준 1748번 수 이어 쓰기 1 파이썬 : baekjoon 1748 python 1748번: 수 이어 쓰기 1 (acmicpc.net) 1748번: 수 이어 쓰기 1 1748번 제출 맞은 사람 숏코딩 재채점 결과 채점 현황 강의 수 이어 쓰기 1 출처 다국어 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 0.15 초 ( 하단 참고 ) 128 MB 12706 5775 4870 50.947% 문제 1부터 N까지의 수를 이어서 쓰면 다음과 같이 새로운 하나의 수를 얻을 수 있다. 1234567891011121314151617181920212223... 이렇게 만들어진 새로운 수는 몇 자리 수일까? 이 수의 자릿수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N(1 ≤ N ≤ 100,00... www.acmicpc.net 수 이어 쓰기 1 성공출처다국어 한국어 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 0.15 초 (하단 참고) 128 MB 12706 5775 4

[Python] 백준 1107번 : 리모컨 [내부링크]

백준 1107번 리모컨 파이썬 : baekjoon 1107 python 1107번: 리모컨 (acmicpc.net) 1107번: 리모컨 문제 수빈이는 TV를 보고 있다. 수빈이는 채널을 돌리려고 했지만, 버튼을 너무 세게 누르는바람에, 일부 숫자 버튼이 고장났다. 리모컨에는 버튼이0부터 9까지 숫자, +와 -가 있다. +를 누르면 현재 보고있는 채널에서 +1된 채널로 이동하고, -를 누르면 -1된 채널로 이동한다. 채널 0에서 -를 누른 경우에는 채널이 변하지 않고, 채널은 무한대 만큼 있다. 수빈이가 지금 이동하려고 하는 채널은 N이다. 어떤 버튼이 고장났는지 주어졌을 때, 채널 N으로 이동하기 위해서 버튼을 최소 몇 번 눌러야하는지 구하는 프로그램을 작성하시... www.acmicpc.net 리모컨 성공 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 2 초 256 MB 48307 11312 7715 22.286% . 문제 TV 채널 N번으로 이동하고 싶다. (0 ≤ N

[Python] 백준 2662번 : 기업투자 [내부링크]

백준 2662번 기업투자 파이썬 : baekjoon 2662 python 2662번: 기업투자 (acmicpc.net) 2662번: 기업투자 문제 어떤 투자가가 여러 기업들에게 돈을 투자해서 최대의 이익을 얻고자 한다. 단, 투자는 만원 단위로 할 수 있으며 각 기업은 많이 투자할수록 많은 이익을 투자가에게 돌려준다. 돈을 투자하지 않은 경우는 당연히 얻게 되는 이익도 없다. 예를 들어서, 한 투자가가 4만원을 갖고 두 개의 기업들에 각각 만원 단위로 투자했을 경우 얻을 수 있는 이익은 다음과 같다. 투자 액수 (만원) 기업 A 기업 B 1 5 1 2 6 5 3 7 9 4 8 15 위의 경우 만일, 기업 A에 1만원, 기업 B에 3만원을 투자하는 경우 투자가가 얻는 이... www.acmicpc.net 기업투자 성공스페셜 저지출처 시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율 1 초 128 MB 4515 1671 1166 38.192% . 문제 임의의 M개 기업에 투자를 하

[Python] 프로그래머스 : 타겟 넘버 [내부링크]

[Python] 프로그래머스 : 타겟 넘버 깊이/너비 우선 탐색(DFS/BFS) 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3 사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요... programmers.co.kr 해결 dfs를 어느 정도 이해하고 있다면 쉽게 풀 수 있는 문제였던 거 같다. numbers의

[Python] 프로그래머스 : 네트워크 [내부링크]

[Python] 프로그래머스 : 네트워크 깊이/너비 우선 탐색(DFS/BFS) 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오. 제한사항 컴퓨... programmers.co.kr 해결 모든 컴퓨터를 한 번씩 확인한다. 컴퓨터를 확인했을 때 연결 되어있는 모든 컴퓨터도 같이 확인

[Python] 프로그래머스 : 단어 변환 [내부링크]

[Python] 프로그래머스 : 단어 변환 깊이/너비 우선 탐색(DFS/BFS) 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 있습니다. 2. words에 있는 단어로만 변환할 수 있습니다. 예를 들어 begin이 "hit", target가 "cog", words가 ["hot","dot","dog","lot","log","cog"]라면 "hit" -> "hot" -> "dot" -> "dog" -> "cog"와 같이 4단계를 거쳐 변... programmers.co.kr 해결 begin을 target으로 가장 빨리 변환할 수 있는 단계를 찾으면 되기 때문에 bfs를