분류 전체보기 645

[파이썬] 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

병합 정렬

병합 정렬 여러 개의 정렬된 자료의 집합을 병합하여 한 개의 정렬되 집합으로 만드는 방식 자료를 최소 단위의 문제까지 나눈 후에 차례대로 정렬하여 최종 결과를 얻음. Top-Down 방식 O(n log n) def merge(left, right): result=[] # 두 개의 분할된 리스트를 병합하여 result 만듦 while len(left) > 0 and len(right) > 0 : # 양쪽 리스트에 원소가 남아있는 경우 # 두 서브 리스트의 첫 원소들을 비교하여 작은 것부터 result에 추가 if left[0] 0 : # 왼쪽 리스트에 원소가 남아있는 경우 result.extend(left) if len(right) > 0 : # 오른쪽 리스트에 원소가 남아있는 경우 result.exten..

삽입 정렬

삽입 정렬자료 배열의 모든 원소들을 앞에서부터 차례대로 이미 정렬된 부분과 비교하여, 자신의 위치를 찾아냄으로써 정렬을 완성o(n^2) 삽입 정렬의 정렬 과정정렬할 자료를 두 개의 부분집합 S와 U로 가정부분집합 S : 정렬된 앞부분의 원소들부분집합 U : 아직 정렬되지 않은 나머지 원소들정렬되지 않은 부분집합 U의 원소를 하나씩 꺼내서 이미 정렬되어있는 부분집합 S의 마지막 원소부터 비교하면서 위치를 찾아 삽입 (반복)삽입정렬을 반복하면서 부분집합 S의 원소는 하나씩 늘리고 부분집합 U의 원소는 하나씩 감소부분집합 U가 공집합이 되면 삽입정렬이 완성# 삽입 정렬lst=list(map(int, input().split())) # 정렬되지 않은 리스트for i in range(1, len(lst))..

Linked List

List 1. 순서를 가진 데이터의 묶음 - 같은 데이터의 중복 저장 가능 2. 시퀀스 자료형 - 인덱싱, 슬라이싱, 연산자, 메서드 사용 가능 3. 크기제한 없음, 타입제한 없음 크기 데이터의 타입 배열 변경 불가 선언된 한가지 타입만 저장가능 리스트 변경 가능 다양한 데이터 타입 저장가능 순차 리스트 : 배열을 기반으로 구현된 리스트 연결 리스트 : 메모리의 동적할당을 기반으로 구현된 리스트 파이썬의 리스트는 동적 배열로 작성된 순차 리스트. 원소의 개수가 많고 삽입/삭제 연산이 빈번한 작업은 소요되는 시간이 크게 증가 리스트 복사 (아래로 갈수록 수행시간이 길다) 코드 설명 1 new_list=old_list 주소의 복사, 얕은 복사 2 new_list=old_list[:] 슬라이싱, 깊은 복사 3..

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

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

coding test 2021.01.27

[파이썬] 5099. 피자 굽기

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다. N개의 피자를 동시에 구울 수 있는 화덕이 있다. 피자는 치즈가 모두 녹으면 화덕에서 꺼내며, 치즈의 양은 피자마다 다르다. 1번부터 M번까지 M개의 피자를 순서대로 화덕에 넣을 때, 치즈의 양에 따라 녹는 시간이 다르기 때문에 꺼내지는 순서는 바뀔 수 있다. 주어진 조건에 따라 피자를 구울 때, 화덕에 가장 마지막까지 남아있는 피자 번호를 알아내는 프로그램을 작성하시오. - 피자는 1번위치에서 넣거나 뺄 수 있다. - 화덕 내부의 피자받침은 천천히 회전해서 1번에서 잠시 꺼내 치즈를 확인하고 다시 같은 자리에 넣을 수 있다. - M개의 피자에 처음 뿌려진 치즈의 양이 주어지고, 화덕을 한 바퀴 돌 때 녹지않은 치즈의 양은 반으로 줄..

coding test 2021.01.26

[파이썬] 5105. 미로의 거리

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다. NxN 크기의 미로에서 출발지 목적지가 주어진다. 이때 최소 몇 개의 칸을 지나면 출발지에서 도착지에 다다를 수 있는지 알아내는 프로그램을 작성하시오. 경로가 있는 경우 출발에서 도착까지 가는데 지나야 하는 최소한의 칸 수를, 경로가 없는 경우 0을 출력한다. 다음은 5x5 미로의 예이다. 1은 벽, 0은 통로를 나타내며 미로 밖으로 벗어나서는 안된다. 13101 10101 10101 10101 10021 마지막 줄의 2에서 출발해서 0인 통로를 따라 이동하면 맨 윗줄의 3에 5개의 칸을 지나 도착할 수 있다. [입력] 첫 줄에 테스트 케이스 개수 T가 주어진다. 1

coding test 2021.01.25