본문 바로가기

코딩테스트

(111)
[기타] 백준 1459번 '걷기' (Python) https://www.acmicpc.net/problem/1459 1459번: 걷기 세준이는 학교에서 집으로 가려고 한다. 도시의 크기는 무한대이고, 도시의 세로 도로는 모든 정수 x좌표마다 있고, 가로 도로는 모든 정수 y좌표마다 있다. 세준이는 현재 (0, 0)에 있다. 그리고 ( www.acmicpc.net 한 블록의 2배 값이 대각선보다 작으면 최종 목적지(x+y) * 한 블록 대각선이 더 빠르다면, x와 y의 차가 짝수라면, {대각선*(x, y 중 작은 값)} + {(한 블록, 대각선 중 작은 값)*(x, y 차)} 홀수라면, {대각선*(x,y 중 작은 값)} + {(한 블록, 대각선 중 작은 값)*((x, y 차)-1)+한 블록} '''입력예제 4 2 3 10 4 2 3 5 2 0 12 10 ..
[기타] 백준 1254번 '팰린드롬 만들기' (Python) https://www.acmicpc.net/problem/1254 1254번: 팰린드롬 만들기 동호와 규완이는 212호에서 문자열에 대해 공부하고 있다. 규완이는 팰린드롬을 엄청나게 좋아한다. 팰린드롬이란 앞에서부터 읽으나 뒤에서부터 읽으나 같게 읽히는 문자열을 말한다. 동호는 www.acmicpc.net 팰린드롬이 맞는지 확인할 수 있는 함수를 만든다. 문자를 하나씩 맨 뒤에 붙이면서 팰린드롬이 맞는지 확인한다. def pal(ss): half = len(ss)//2 for i in range(half): if s[i] != s[-(i+1)]: return False return True tmp = '' s = input() leng = len(s) if fel(s)==False: for i in ra..
[연결리스트/트리구조] 프로그래머스 L3 '이중우선순위' (Python) https://programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 최대 1,000,000개의 최솟값, 최댓값을 넣고 빼야 하므로 heapq 사용 문제에서 주어진 조건대로 알고리즘 구성 import heapq def solution(operations): answer = [] for i in operations: if i[0]=="I": heapq.heappush(answer,int(i[2:])) else: if answer!=[]: if i[2:]=="-1": heapq.heappop(answer) else: answer.pop() if answer==[]: return [0,0] else: return..
[동적계획법] 난이도1.5, Google 인터뷰 '못생긴 수' (Python) 못생긴 수란 오직 2, 3, 5만을 소인수로 가지는 수를 의미합니다. 다시 말해 오직 2, 3, 5를 약수로 가지는 합성수를 의미합니다. 1은 못생긴 수라고 가정합니다. 따라서 못생긴 수들은 {1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15,...} 순으로 이어지게 됩니다. 이때, n번째 못생긴 수를 찾는 프로그램을 작성하세요. 예를 들어 11번째 못생긴 수는 15입니다. 첫째 줄에 n이 입력됩니다. (1
[동적계획법] 난이도1.5, Flipkart 인터뷰 '금광' (Python) n x m 크기의 금광이 있습니다. 금광은 1 x 1 크기의 칸으로 나누어져 있으며, 각 칸은 특정한 크기의 금이 들어 있습니다. 채굴자는 첫 번째 열부터 출발하여 금을 캐기 시작합니다. 맨 처음에는 첫 번째 열의 어느 행에서든 출발할 수 있습니다. 이후에 m번에 걸쳐서 매번 오른쪽 위, 오른쪽, 오른쪽 아래 3가지 중 하나의 위치로 이동해야 합니다. 결과적으로 채굴자가 얻을 수 있는 금의 최대 크기를 출력하는 프로그램을 작성하세요. 만약 다음과 같이 3x4 크기의 금광이 존재한다고 가정합시다. 1 3 3 2 2 1 4 1 0 6 4 7 가장 왼쪽 위의 위치를 (1,1), 가장 오른쪽 아래의 위치를 (n, m)이라고 할 때, 위 예시에서는 (2,1) -> (3,2) -> (3,3) -> (3,4)의 위치..
[큐] 프로그래머스 L2 '프린터' (Python) https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr priorities값과 해당 값의 배열 위치를 q에 저장 문제에서 제시한 방법대로 알고리즘을 구현 #1차 시도. 2,5,18 실패. def solution(priorities, location): q = [] count = 0 for idx, i in enumerate(priorities): q.append((idx,i)) while q: tmp = q.pop(0)..
[동적계획법] 난이도2, 이취코 220p '개미 전사' (Python) 개미 전사는 부족한 식량을 충당하고자 메뚜기 마을의 식량창고를 몰래 공격하려고 한다. 메뚜기 마을에는 여러 개의 식량창고가 있는데 식량창고는 일직선으로 되어 있다. 각 식량창고에는 정해진 수의 식량을 저장하고 있으며 개미 전사는 식량창고를 선택적으로 약탈하여 식량을 빼앗을 예정이다. 이때 메뚜기 정찰병은 일직선상에 존재하는 식량창고 중에서 서로 인접한 식량창고가 공격받으면 알아챌 수 있다. 따라서 개미 전사가 정찰병에게 들키지 않고 식량창고를 약탈하기 위해서는 최소한 한 칸 이상 떨어진 식량창고를 약탈해야 한다. 예를 들어 식량창고 4개가 다음과 같이 존재한다고 가정하자. {1, 3, 1, 5} 이때 개미 전사는 두 번째 식량창고와 네 번째 식량 창고를 선택했을 때 최댓값인 8개의 식량을 빼앗을 수 있다..
[탐욕법] 난이도1, 2019 SW 마에스트로 입학 테스트 '볼링공 고르기' (Python) 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번) 결과적..

LIST