본문 바로가기

코딩테스트

(21)
[프로그래머스/Python] level 1. 같은 숫자는 싫어 (고득점 Kit - 스택/큐) 문제 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면, arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다. arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다. 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요. 제한사항 배열 arr의 크기 : 1,000,000 이하의 자연수 배열 arr의 원소의 크기 : 0보다 크거나 같고 ..
[프로그래머스/level 4] 도둑질 (문제/정답/풀이) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정답 def solution(money): dp1 = [0] * len(money) dp2 = [0] * len(money) #1. 첫 집을 터는 경우 dp1[0] = money[0] dp1[1] = max(money[0],money[1]) #2. 첫 집을 털지 않는 경우 dp2[0] = 0 dp2[1] = money[1] for i in range(2,len(money)-1): # 마지막집은 계산에서 제외해야함 dp1[i] = max(dp1[i-2]+money[i] , dp1[i-1]) for i in..
[프로그래머스] K번째 수 - (python/java 풀이) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 처음 작성한 코드 def solution(array, commands): answer = [] for com in commands: new_arr = sorted(array[com[0]-1:com[1]])[com[2]-1] new_arr.sort() answer.append(new_arr) return answer n번째 수라면 배열의 인덱스 상으로는 n-1으로 접근해야 하는 것이 포인트! 코드 단순화 def solution(array, commands): answer = [] for com in com..
[이코테/다이나믹프로그래밍/DP] 금광(정답,풀이) 문제 - n x m 크기의 금광의 각 칸은 특정한 크기의 금이 들어 있음 - 채굴자가 첫 번째 열부터 출발해 금을 캠 - 첫 번째 열의 어느 행에서든 출발할 수 있고, 이후 m번에 걸쳐 매번 오른쪽위/오른쪽/오른쪽 아래로의 이동을 수행 - 채굴이 끝난 후 채굴자가 얻을 수 있는 금의 최대 크기 출력 정답 for tc in range(int(input())): n,m = map(int,input().split()) array = list(map(int,input().split())) dp =[] index = 0 for i in range(n): dp.append(array[index:index+m]) index+=m # dp[i][j] 칸 = 왼쪽 위/왼쪽/왼쪽 아래 세 개의 값 중 가장 큰 값. for..
[이코테/이진탐색/백준] 공유기 설치(정답,풀이) 문제 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 정답 n,c = map(int,input().split()) array = [int(input()) for _ in range(n)] array.sort() start = 1 end = array[-1] - array[0] result = 0 while start = value + mid :# 공유기를 설치할 수 있는 집이면 설치 value = array[i] # 다음 공유기 설치를 위해 이전에 공유기를 ..
[이코테/정렬] 카드 정렬하기 문제 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 정답 import heapq n = int(input()) heap = [] for i in range(n): data = int(input()) heapq.heappush(heap,data) # 만들어놓은 heap배열에 data를 넣을건데 기존의 값들과 비교해서 더 작은 값이 앞에 오도록 넣음 # 데이터의 삽입,수정,갱신에 따라 자동으로 재정렬됨 result = 0 while len(heap) != 1: # heap에 원소가 하나만 남게 되..
[이코테/bfs/삼성 기출] 인구 이동(정답, 풀이, 풀리지 않는 의문..) 문제 https://www.acmicpc.net/problem/16234 https://www.acmicpc.net/problem/16234 정답 from collections import deque n,l,r = map(int,input().split()) graph =[] for _ in range(n): graph.append(list(map(int,input().split()))) dx = [1,0,1,0] dy = [0,-1,0,1] def process(x,y,index): # 한 연합의 인구이동 로직 united = [] # 한 연합에 포함되는 나라가 담길 배열. 인구이동 시 필요 united.append((x,y)) q = deque() # dfs수행. 국경선을 여는 조건에 따라 연합을 확..
[이코테/dfs/백준] 감시 피하기(정답,풀이) 문제 18428번: 감시 피하기 NxN 크기의 복도가 있다. 복도는 1x1 크기의 칸으로 나누어지며, 특정한 위치에는 선생님, 학생, 혹은 장애물이 위치할 수 있다. 현재 몇 명의 학생들은 수업시간에 몰래 복도로 빠져나왔는데, 복 www.acmicpc.net 내 정답 ============================= [ 1 ] ===================================== from itertools import combinations from collections import deque n = int(input()) ground = [] ts, cs = [],[] for i in range(n): data = list(input().split()) for j in range(le..