본문 바로가기

코테

(10)
[프로그래머스/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보다 크거나 같고 ..
[프로그래머스] 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..
[이코테/정렬] 카드 정렬하기 문제 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수행. 국경선을 여는 조건에 따라 연합을 확..
[이코테/구현/카카오 기출] 외벽 점검 (정답, 풀이) 문제 레스토랑을 운영하고 있는 "스카피"는 레스토랑 내부가 너무 낡아 친구들과 함께 직접 리모델링 하기로 했습니다. 레스토랑이 있는 곳은 스노우타운으로 매우 추운 지역이어서 내부 공사를 하는 도중에 주기적으로 외벽의 상태를 점검해야 할 필요가 있습니다. 레스토랑의 구조는 완전히 동그란 모양이고 외벽의 총 둘레는 n미터이며, 외벽의 몇몇 지점은 추위가 심할 경우 손상될 수도 있는 취약한 지점들이 있습니다. 따라서 내부 공사 도중에도 외벽의 취약 지점들이 손상되지 않았는 지, 주기적으로 친구들을 보내서 점검을 하기로 했습니다. 다만, 빠른 공사 진행을 위해 점검 시간을 1시간으로 제한했습니다. 친구들이 1시간 동안 이동할 수 있는 거리는 제각각이기 때문에, 최소한의 친구들을 투입해 취약 지점을 점검하고 나머..
[이코테/구현] 치킨배달 문제 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸, 왼쪽에서부터 c번째 칸을 의미한다. r과 c는 1부터 시작한다. 이 도시에 사는 사람들은 치킨을 매우 좋아한다. 따라서, 사람들은 "치킨 거리"라는 말을 주로 사용한다. 치킨 거리는 집과 가장 가까운 치킨집 사이의 거리이다. 즉, 치킨 거리는 집을 기준으로 정해지며, 각각의 집은 치킨 거리를 가지고 있다. 도시의 치킨 거리는 모든 집의 치킨 거리의 합이다. 임의의 두 칸 (r1, c1)과 (r2, c2) 사이의 거리는 |r1-r2| + |c1-c2|로 구한다. 예를 들어, 아래와 같은 지..
[이코테/그리디] 볼링공 고르기 (정답, 풀이) 문제 A,B 두 사람이 볼링을 치고 있습니다. 두 사람은 서로 무게가 다른 볼링공을 고르려고 합니다. 볼링공은 총 N개가 있으며 각 볼링공마다 무게가 적혀 있고, 공의 번호는 1번부터 순서대로 부여됩니다. 또한 같은 무게의 공이 여러 개 있을 수 있지만, 서로 다른 공으로 간주합니다. 볼링공의 무게는 1부터 M까지의 자연수 형태로 존재합니다.예를 들어 N이 5이고, M이 3이며 각각의 무게가 차례대로 1,3,2,3,2일 때 각 공의 번호가 차례대로 1번부터 5번까지 부여됩니다. 이때 두 사람이 고를 수 있는 볼링공 번호의 조합을 구하면 다음과 같습니다. (1번, 2번), (1번, 3번), (1번, 4번), (1번, 5번), (2번, 3번), (2번, 5번), (3번, 4번), (4번, 5번) 결과적으로 ..