skinOptions.hljs
문제 / 재귀 함수를 이용한 이진수 출력 / Python 파이썬
·
coding test - python/기본기 문제
문제 제목: 재귀 함수를 이용한 이진수 출력 10진수 N이 입력되면 2진수로 변환하여 출력하는 프로그램을 작성하세요. 단 재귀함수를 이용 해서 출력해야 합니다. ▣ 입력설명 첫 번째 줄에 10진수 N(1
문제 / 회의실 배정 (그리디) / Python 파이썬
·
coding test - python/기본기 문제
문제 제목: 회의실 배정 (그리디) 문제 KEY POINT 회의실 배정이 최대가 되도록 구하면 되는 문제이다. 따라서 주어진 데이터에서 어떤 시간을 위주로 볼 것인가? 에대한 문제이다. 이 문제는 시작 시간이 중요한게 아니다. 회의가 끝나는 시간을 위주로 정렬하여, 빨리 끝나는 시간을 기준으로 봐야한다. 1. 입력 창 구현 n = int(input()) meet = [] for i in range(n): m1, m2 = map(int,input().split()) meet.append([m1,m2]) 2. lambda 함수를 이용하여 sorted 함수의 키 값 설정 list = sorted(list, key lambda x: (x[1],x[0])) 는 즉 x[1]의 값을 기준으로 오름차순 정렬을 하겠다는..
문제 / 최대힙 / Python 파이썬
·
coding test - python/기본기 문제
문제 제목: 최대힙 함수 살펴보기 heapq.heappush(heap, item): item을 heap에 추가 heapq.heappop(heap): heap에서 가장 작은 원소를 pop후 return. 비어있는 경우에는 IndexError가 호출된다. heapq.heapify(x): 리스트 x를 즉각적으로 heap으로 변환시킨다. ** 힙 함수는 모두 최소힙을 기반으로 작성됨. 최대힙을 구현하려면 음의 부호를 붙여서 push를 해준다. (pop할 때는 원래 값이 반환되어야하니 한번 더 음의 부호를 넣어준다.) 모범답안 import heapq as hq a = [] while True: n = int(input()) if n == -1: break if n == 0: # 숫자 0이 입력되면 최소힙에서 최솟..
문제 / 최소힙 / Python 파이썬
·
coding test - python/기본기 문제
문제 제목: 최소힙 - 힙 자료구조 함수 살펴보기 heapq.heappush(heap, item): item을 heap에 추가 heapq.heappop(heap): heap에서 가장 작은 원소를 pop후 return. 비어있는 경우에는 IndexError가 호출된다. heapq.heapify(x): 리스트 x를 즉각적으로 heap으로 변환시킨다. ** 힙 함수는 모두 최소힙을 기반으로 작성됨. 최대힙을 구현하려면 음의 부호를 붙여서 push를 해준다. (pop할 때는 원래 값이 반환되어야하니 한번 더 음의 부호를 넣어준다.) 모범답안 import heapq as hq a = [] while True: n = int(input()) if n == -1 break if n == 0: # 숫자 0이 입력되면 ..
문제 / 랜선 자르기 / Python 파이썬
·
coding test - python/기본기 문제
문제 제목: 랜선 자르기 (이분 탐색) 랜선자르기(결정알고리즘) 엘리트 학원은 자체적으로 K개의 랜선을 가지고 있다. 그러나 K개의 랜선은 길이가 제각각이 다. 선생님은 랜선을 모두 N개의 같은 길이의 랜선으로 만들고 싶었기 때문에 K개의 랜선을 잘라서 만들어야 한다. 예를 들어 300cm 짜리 랜선에서 140cm 짜리 랜선을 두 개 잘라내면 20cm 은 버려야 한다. (이미 자른 랜선은 붙일 수 없다.) 편의를 위해 랜선을 자를때 손실되는 길이는 없다고 가정하며, 기존의 K개의 랜선으로 N개의 랜선을 만들 수 없는 경우는 없다고 가정하자. 그리고 자를 때는 항상 센티미터 단위로 정수 길이만큼 자른다고 가정하자. N개보다 많이 만드는 것도 N개를 만드는 것에 포함된다. 이때 만들 수 있는 최대 랜선의 길..
문제 / 이분 검색 / Python 파이썬
·
coding test - python/기본기 문제
문제 제목: 이분 검색 임의의 N개의 숫자가 입력으로 주어집니다. N개의 수를 오름차순으로 정렬한 다음 N개의 수 중 한 개의 수인 M이 주어지면 이분검색으로 M이 정렬된 상태에서 몇 번째에 있는지 구하는 프로그램을 작성하세요. 단 중복값은 존재하지 않습니다. ▣ 입력설명 첫 줄에 한 줄에 자연수 N(3
문제 / 봉우리 / Python 파이썬
·
coding test - python/기본기 문제
문제 제목: 봉우리 지도 정보가 N*N 격자판에 주어집니다. 각 격자에는 그 지역의 높이가 쓰여있습니다. 각 격자 판의 숫자 중 자신의 상하좌우 숫자보다 큰 숫자는 봉우리 지역입니다. 봉우리 지역이 몇 개 있는 지 알아내는 프로그램을 작성하세요. 격자의 가장자리는 0으로 초기화 되었다고 가정한다. 만약 N=5 이고, 격자판의 숫자가 다음과 같다면 봉우리의 개수는 10개입니다. 그림대로 구현하기 n = int(input()) arr = [list(map(int, input().split())) for _ in range(n)] for i in range(n): arr[i].insert(0,0) arr[i].append(0) arr.insert(0,[0]*(n+2)) arr.append([0]*(n+2)) ..
문제 / 모래시계 / Python 파이썬
·
coding test - python/기본기 문제
문제 제목: 모래시계 현수는 곳감을 만들기 위해 감을 깍아 마당에 말리고 있습니다. 현수의 마당은 N*N 격자판으 로 이루어져 있으며, 현수는 각 격자단위로 말리는 감의 수를 정합니다. 그런데 해의 위치에 따라 특정위치의 감은 잘 마르지 않습니다. 그래서 현수는 격자의 행을 기준으로 왼쪽, 또는 오른쪽으로 회전시켜 위치를 변경해 모든 감이 잘 마르게 합니다. 만약 회전명령 정보가 2 0 3이면 2번째 행을 왼쪽으로 3만큼 아래 그림처럼 회전시키는 명령 입니다. 나의 풀이 n = int(input()) arr = [list(map(int, input().split())) for _ in range(n)] m = int(input()) arr_m = [list(map(int, input().split()))..
문제 / 사과나무(다이아몬드) / Python 파이썬
·
coding test - python/기본기 문제
문제 제목: 사과나무(다이아몬드) 현수의 농장은 N*N 격자판으로 이루어져 있으며, 각 격자안에는 한 그루의 사과나무가 심어저 있다. N의 크기는 항상 홀수이다. 가을이 되어 사과를 수확해야 하는데 현수는 격자판안의 사 과를 수확할 때 다이아몬드 모양의 격자판만 수확하고 나머지 격자안의 사과는 새들을 위해서 남겨놓는다. 만약 N이 5이면 아래 그림과 같이 진한 부분의 사과를 수확한다. 나의 풀이 n = int(input()) arr = [list(map(int, input().split())) for _ in range(n)] # 2차원 배열 입력 sum_arr = [] # 답을 넣어줄 배열 mid = n // 2 # 중간 값 cnt = 0 pt = 1 answer = 0 while cnt != n: i..
문제 / 격자판 최대합 / Python
·
coding test - python/기본기 문제
문제 제목: 격자판 최대합 나의 풀이 (80점) n = int(input()) d = list(list(map(int, input().split())) for _ in range(n)) sum_list = [] # 각 행열,대각선의 합을 저장하는 리스트 cross1_list = [] #대각선을 저장하는 리스트 cross2_list = [] #반대 대각선을 저장하는 리스트 for i in range(n): sum_list.append(sum(d[i][:n])) #각 행들의 합 sum_list.append(sum(d[:n][i])) #각 열들의 합 cross1_list.append(d[i][i]) #대각선의 수 cross2_list.append(d[i][n-i-1]) #반대대각선의 수 sum_list.app..
문제 / *수들의 합/ Python
·
coding test - python/기본기 문제
문제 제목: 수들의 합 N개의 수로 된 수열 A[1], A[2], …, A[N] 이 있다. 이 수열의 i번째 수부터 j번째 수까지의 합 A[i]+A[i+1]+…+A[j-1]+A[j]가 M이 되는 경우의 수를 구하는 프로그램을 작성하시오. ▣ 입력설명 첫째 줄에 N(1≤N≤10,000), M(1≤M≤300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다. ▣ 출력설명 첫째 줄에 경우의 수를 출력한다. ▣ 입력예제 8 3 1 2 1 3 1 1 1 2 ▣ 출력예제 5 나의 풀이 n,m = map(int,input().split()) A = list(map(int,input().split())) cn..
문제 / 카드 역배치 / Python
·
coding test - python/기본기 문제
문제 제목: 카드 역배치 * 값 스왑 a,b = b,a 를 하면 a와 b의 값이 스왑(바뀐다)된다. *for _ in range() for _ in range(10) 언더바 _는 변수가 없이 그냥 반복만함 **카드 배치에 있어서 s부터e까지의 리스트를 선택한 뒤 해당 인덱스들의 값들을 바꾸기 위해선 횟수를 (e-s+1)//2 까지 수행하면 된다. 회문문자열과 조금은 다르지만 진짜 조금 비슷한 유형인거같다. 모범답안 a=list(range(21)) for _ in range(10): s, e=map(int, input().split()) for i in range((e-s+1)//2): a[s+i], a[e-i]=a[e-i], a[s+i] a.pop(0) for x in a: print(x, end=' '..