coding test 238

[C] 거스름돈 줄이기

일정 금액을 거슬러 줄 때, 10원, 50원, 100원, 250원, 500원이 있다고 가정하고 거스름 돈의 개수를 최소한으로 하는 방법을 찾자. #include #define LEN 5 int coins[] = { 500, 250, 100, 50, 10 };// 동전 종류 int count[LEN]; // 동전 갯수 int money; int i = 0; int main() { scanf_s("%d", &money); while (money != 0) { if (money < 0) { // 거스름돈을 많이 준 경우 count[i]--; money += coins[i++]; } else { // 거스름 돈을 더 주어야 하는 경우 count[i]++; money -= coins[i]; } } for (i =..

coding test 2021.02.16

[파이썬] Gravity

by SW expert academy 상자들이 쌓여있는 방이 있다. 방이 오른쪽으로 90도 회전하여 상자들이 중력의 영향을 받아 낙하한다고 할 때, 낙차가가장 큰 상자를 구하여 그 낙차를 출력하여 보자. 위의 예시에서 총 26개의 상자가 회전 후, 오른쪽 그림의 상태가 된다. A상자의 낙차가 7로 가장 크므로 7을 출력하면 된다. 회전 결과, B 상자의 낙차는 6, C 상자의 낙차는 1이다. 중력은 회전이 완료된 후 적용된다. 상자들은 모두 한쪽 벽면에 붙여진 상태로 쌓여 2차원의 형태를 이루며 벽에서 떨어져서 쌓인 상자는 없다. 입력 첫 번째 줄에 test case의 수 T(1

coding test 2021.02.10

[파이썬] 5178. 노드의 합

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다. 완전 이진 트리의 리프 노드에 1000이하의 자연수가 저장되어 있고, 리프 노드를 제외한 노드에는 자식 노드에 저장된 값의 합이 들어있다고 한다. 다음은 리프 노드에 저장된 1, 2, 3이 주어졌을 때, 나머지 노드에 자식 노드의 합을 저장한 예이다. N개의 노드를 갖는 완전 이진 트리의 노드 번호는 루트가 1번이 되며, 같은 단계에서는 왼쪽에서 오른쪽으로 증가, 단계가 꽉 차면 다음단계의 왼쪽부터 시작된다. 완전 이진 트리의 특성상 1번부터 N번까지 빠지는 노드 번호는 없다. 리프 노드의 번호와 저장된 값이 주어지면 나머지 노드에 자식 노드 값의 합을 저장한 다음, 지정한 노드 번호에 저장된 값을 출력하는 프로그램을 작성 하시오. ..

coding test 2021.02.08

[파이썬] 5174. subtree

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다. 트리의 일부를 서브 트리라고 한다. 주어진 이진 트리에서 노드 N을 루트로 하는 서브 트리에 속한 노드의 개수를 알아내는 프로그램을 만드시오. 주어지는 트리는 부모와 자식 노드 번호 사이에 특별한 규칙이 없고, 부모가 없는 노드가 전체의 루트 노드가 된다. 이런 경우의 트리는 부모 노드를 인덱스로 다음과 같은 방법으로 나타낼 수 있다. 자식 노드가 0인 경우는 노드가 자식이 없는 경우이다. 부모 1 2 3 4 5 6 자식1 6 1 0 0 3 4 자식2 0 5 0 0 0 0 [입력] 첫 줄에 테스트케이스의 수 T가 주어진다. 1

coding test 2021.02.04

[파이썬] 5122. 수열 편집

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다. N개의 10억 이하 자연수로 이뤄진 수열이 주어진다. 이 수열은 완성된 것이 아니라 M번의 편집을 거쳐 완성된다고 한다. 완성된 수열에서 인덱스 L의 데이터를 출력하는 프로그램을 작성하시오. 다음은 미완성 수열과 편집의 예이다. 인덱스 0 1 2 3 4 수열 1 2 3 4 5 I 2 7 -> 2번 인덱스 앞에 7을 추가하고, 한 칸 씩 뒤로 이동한다. 인덱스 0 1 2 3 4 5 수열 1 2 7 3 4 5 D 4 -> 4번 인덱스 자리를 지우고, 한 칸 씩 앞으로 이동한다. 인덱스 0 1 2 3 4 수열 1 2 7 3 5 C 3 8 -> 3번 인덱스 자리를 8로 바꾼다. 인덱스 0 1 2 3 4 수열 1 2 7 8 5 만약 편집이 끝..

coding test 2021.02.03

[파이썬] 5120. 암호

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다. A사는 창립기념일 이벤트로 비밀번호 맞추기 대회를 열어, 최대 10개인 비밀번호를 맞추는 사람에게 기념품을 제공하기로 했다. 기념품을 받을 수 있도록 다음 조건에 맞는 비밀번호 찾기 프로그램을 작성하시오. - 1000이하의 숫자 N개가 주어진다. 이때 시작 숫자가 정해지고, 첫 번째 지정 위치가 된다. - 지정 위치부터 M번째 칸을 추가한다. 여기에 앞칸의 숫자와 뒤로 밀려난 칸의 숫자를 더해 넣는다. 추가된 칸이 새로운 지정 위치가 된다. 밀려난 칸이 없으면 시작 숫자와 더한다. - 이 작업을 K회 반복하는데, M칸 전에 마지막 숫자에 이르면 남은 칸수는 시작 숫자부터 이어간다. - 마지막 숫자부터 역순으로 숫자를 출력하면 비밀번호..

coding test 2021.02.01

[파이썬] 5110. 수열 합치기

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다. 여러 개의 수열을 정해진 규칙에 따라 합치려고 한다. 다음은 3개의 수열이 주어진 경우의 예이다. 수열 1 2 3 4 5 수열 2 4 8 7 6 수열 3 9 10 15 16 수열 4 1 2 6 5 수열 2의 첫 숫자 보다 큰 숫자를 수열 1에서 찾아 그 앞에 수열 2를 끼워 넣는다. 2 3 4 4 8 7 6 5 합쳐진 수열에 대해, 수열 3의 첫 숫자보다 큰 숫자를 찾아 그 앞에 수열 3을 끼워 넣는다. 큰 숫자가 없는 경우 맨 뒤에 붙인다. 2 3 4 4 8 7 6 5 9 10 15 16 마지막 수열까지 합치고 나면, 맨 뒤의 숫자부터 역순으로 10개를 출력한다. 1 2 6 5 2 3 4 4 8 7 6 5 9 10 15 16 [입력..

coding test 2021.01.29

[파이썬] 5108. 숫자 추가

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다. N개의 10억 이하 자연수로 이뤄진 수열이 주어진다. 이 수열은 완성된 것이 아니라 M개의 숫자를 지정된 위치에 추가하면 완성된다고 한다. 완성된 수열에서 인덱스 L의 데이터를 출력하는 프로그램을 작성하시오. 다음은 숫자를 추가하는 예이다. 인덱스 0 1 2 3 4 수열 1 2 3 4 5 2 7 -> 2번 인덱스에 7을 추가하고 한 칸 씩 뒤로 이동한다. 인덱스 0 1 2 3 4 5 수열 1 2 7 3 4 5 4 8 -> 4번 인덱스에 8을 추가하고 한 칸 씩 뒤로 이동한다. 인덱스 0 1 2 3 4 5 6 수열 1 2 7 3 8 4 5 [입력] 첫 줄에 테스트케이스의 수 T가 주어진다. 1

coding test 2021.01.29

[파이썬] 5102. 노드의 거리

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다. V개의 노드 개수와 방향성이 없는 E개의 간선 정보가 주어진다. 주어진 출발 노드에서 최소 몇 개의 간선을 지나면 도착 노드에 갈 수 있는지 알아내는 프로그램을 만드시오. 예를 들어 다음과 같은 그래프에서 1에서 6으로 가는 경우, 두 개의 간선을 지나면 되므로 2를 출력한다. 노드 번호는 1번부터 존재하며, 노드 중에는 간선으로 연결되지 않은 경우도 있을 수 있다. [입력] 첫 줄에 테스트 케이스 개수 T가 주어진다. 1

coding test 2021.01.27