나동빈 100

[최단 경로] 이코테 (파이썬) 정확한 순위 풀이

[문제] 선생님은 시험을 본 학생 N명의 성적을 분실하고, 성적을 비교한 결과의 일부만 가지고 있습니다. 학생 N명의 성적은 모두 다른데, 다음은 6명의 학생에 대하여 6번만 성적을 비교한 결과입니다. 1번 학생의 성적 < 5번 학생의 성적 3번 학생의 성적 < 4번 학생의 성적 4번 학생의 성적 < 2번 학생의 성적 4번 학생의 성적 < 6번 학생의 성적 5번 학생의 성적 < 2번 학생의 성적 5번 학생의 성적 < 4번 학생의 성적 A번 학생의 성적이 B번 학생보다 낮다면 화살표가 A에서 B를 가리키도록 할 때 위의 성적 결과를 다음 그림처럼 표현할 수 있습니다. 이 그림으로 유추해서 순위를 정확히 알 수 있는 학생도 있고, 알 수 없는 학생도 있습니다. 예를 들어 1번 학생은 5번 학생보다 성적이 낮..

[다이나믹 프로그래밍] 이코테 (파이썬) 편집 거리 풀이

[문제] 두 개의 문자열 A와 B가 주어졌을 때, 문자열 A를 편집하여 문자열 B로 만들고자 합니다. 문자열 A를 편집할 때는 다음의 세 연산 중에서 한 번에 하나씩 선택하여 이용할 수 있습니다. 1. 삽입(Insert) : 특정한 위치에 하나의 문자를 삽입합니다. 2. 삭제(Remove) : 특정한 위치에 있는 하나의 문자를 삭제합니다. 3. 교체(Replace) : 특정한 위치에 있는 하나의 문자를 다른 문자로 교체합니다. 이때 편집 거리란 문자열 A를 편집하여 문자열 B로 만들기 위해 사용한 연산의 수를 의미합니다. 문자열 A를 문자열 B로 만드는 최소 편집 거리를 계산하는 프로그램을 작성하세요. 예를 들어 "sunday"와 "saturday"의 최소 편집 거리는 3입니다. [입력 조건] 1. 두 ..

[다이나믹 프로그래밍] 이코테 (파이썬) 못생긴 수 풀이

[문제] 못생긴 수란 오직 2, 3, 5만을 소인수(Prime Factor)로 가지는 수를 의미합니다. 다시 말해 오직 2, 3, 5를 약수로 가지는 합성수를 의미합니다. 1은 못생긴 수라고 가정합니다. 따라서 못생긴 수들은 {1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, ...} 순으로 이어지게 됩니다. 이때, n번째 못생긴 수를 찾는 프로그램을 작성하세요. 예를 들어 11번째 못생긴 수는 15입니다. [입력 조건] 1. 첫째 줄에 N이 입력됩니다. (1

[다이나믹 프로그래밍] 이코테 (파이썬) 병사 배치하기 풀이

[문제] N명의 병사가 무작위로 나열되어 있습니다. 각 병사는 특정한 값의 전투력을 보유하고 있으며, 병사를 배치할 때는 전투력이 높은 병사가 앞쪽에 오도록 내림차순으로 배치를 하고자 합니다. 다시 말해 앞쪽에 있는 병사의 전투력이 항상 뒤쪽에 있는 병사보다 높아야 합니다. 또한 배치 과정에서는 특정한 위치에 있는 병사를 열외시키는 방법을 이용합니다. 그러면서도 남아 있는 병사의 수가 최대가 되도록 하고 싶습니다. 예를 들어, N = 7 일 때 나열된 병사들의 전투력이 다음과 같다고 가정하겠습니다. 병사 번호 1 2 3 4 5 6 7 전투력 15 11 4 8 5 2 4 이때 3번 병사와 6번 병사를 열외시키면, 다음과 같이 남아 있는 병사의 수가 내림차순의 형태가 되며 5명이 됩니다. 이는 남아 있는 병..

[다이나믹 프로그래밍] 이코테 (파이썬) 퇴사 풀이

[문제] 상담원으로 일하고 있는 백준이는 퇴사를 하려고 합니다. 오늘부터 N + 1일째 되는 날 퇴사를 하기 위해서, 남은 N일 동안 최대한 많은 상담을 하려고 합니다. 백준이는 비서에게 최대한 많은 상담을 잡으라고 부탁을 했고, 비서는 하루에 하나씩 서로 다른 사람의 상담을 잡아 놓았습니다. 각각의 상담은 상담을 완료하는 데 걸리는 기간 Ti와 상담을 했을 때 받을 수 있는 금액 Pi로 이루어져 있습니다. N = 7인 경우에 다음과 같은 상담 일정표가 있습니다. 1일 2일 3일 4일 5일 6일 7일 Ti 3 5 1 1 2 4 2 Pi 10 20 10 20 15 40 200 1일에 잡혀 있는 상담은 총 3일이 걸리며, 상담했을 때 받을 수 있는 금액은 10입니다. 5일에 잡혀 있는 상담은 총 2일이 걸리..

[다이나믹 프로그래밍] 이코테 (파이썬) 정수 삼각형 풀이

[문제] 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 위 그림은 크기가 5인 정수 삼각형의 한 모습입니다. 맨 위층 7부터 시작해서 아래에 있는 수 중 하나를 선택하여 아래층으로 내려올 때, 이제까지 선택된 수의 합이 최대가 되는 경로를 구하는 프로그램을 작성하세요. 아래층에 있는 수는 현재 층에서 선택된 수의 대각선 왼쪽 또는 대각선 오른쪽에 있는 것 중에서만 선택할 수 있습니다. 삼각형의 크기는 1 이상 500 이하입니다. 삼각형을 이루고 있는 각 수는 모두 정수이며, 그 값의 범위는 0 이상 9999 이하입니다. [입력 조건] 1. 첫째 줄에 삼각형의 크기 n(1

[다이나믹 프로그래밍] 이코테 (파이썬) 금광 풀이

[문제] n x m 크기의 금광이 있습니다. 금광은 1 x 1 크기의 칸으로 나누어져 있으며, 각 칸은 특정한 크기의 금이 들어 있습니다. 채굴자는 첫 번재 열부터 출발하여 금을 캐기 시작합니다. 맨 처음에는 첫 번째 열의 어느 행에서든 출발할 수 있습니다. 이후에 m번에 걸쳐서 매번 오른쪽 위, 오른쪽, 오른쪽 아래 3가지 중 하나의 위치로 이동해야 합니다. 결과적으로 채굴자가 얻을 수 있는 금의 최대 크기를 출력하는 프로그램을 작성하세요. 만약 다음과 같이 3 x 4 크기의 금광이 존재한다고 가정합시다. 1 3 3 2 2 1 4 1 0 6 4 7 가장 왼쪽 위의 위치를 (1, 1), 가장 오른쪽 아래의 위치를 (n, m)이라고 할 때, 위 예시에서는 (2, 1) -> (3, 2) -> (3, 3) -..

[이진 탐색] 이코테 (파이썬) 가사 검색 풀이

[문제] 친구들로부터 천재 프로그래머로 불리는 "프로도"는 음악을 하는 친구로부터 자신이 좋아하는 노래 가사에 사용된 단어들 중에 특정 키워드가 몇 개 포함되어 있는지 궁금하니 프로그램으로 개발해 달라는 제안을 받았습니다. 그 제안 사항 중, 키워드는 와일드카드 문자 중 하나인 '?'가 포함된 패턴 형태의 문자열을 뜻합니다. 와일드카드 문자인 '?'는 글자 하나를 의미하며, 어떤 문자에도 매치된다고 가정합니다. 예를 들어 "fro??"는 "frodo", "front", "frost" 등에 매치되지만 "frame", "frozen"에는 매치되지 않습니다. 가사에 사용된 모든 단어들이 담긴 배열 words와 찾고자 하는 키워드가 담긴 배열 queries가 주어질 때, 각 키워드별로 매치된 단어가 몇 개인지 ..

[이진 탐색] 이코테 (파이썬) 공유기 설치 풀이

[문제] 도현이의 집 N개가 수직선 위에 있습니다. 각각의 집의 좌표는 x1, x2, ..., xN이고, 집 여러 개가 같은 좌표를 가지는 일은 없습니다. 도현이는 언제 어디서나 와이파이를 즐기기 위해서 집에 공유기 C개를 설치하려고 합니다. 최대한 많은 곳에서 와이파이를 사용하려고 하기 때문에, 한 집에는 공유기를 하나만 설치할 수 있고, 가장 인접한 두 공유기 사이의 거리를 가능한 크게하여 설치하려고 합니다. C개의 공유기를 N개의 집에 적당히 설치해서, 가장 인접한 두 공유기 사이의 거리를 최대로 하는 프로그램을 작성하세요. [입력 조건] 1. 첫째 줄에 집의 개수 N(2