Coding Test/programmers 12

[프로그래머스] 여행 경로- java (레벨 3)

https://school.programmers.co.kr/learn/courses/30/lessons/43164 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 문제를 보았을때 알수있는 힌트 dfs로 방문 유무를 계산하며 끝까지 도착한 경우만을 list에 담는 형식으로 진행한다. 끝까지 가는 경우가 몇가지 나오는데 그중에서 정렬을 하여 알파벳 순서로 정렬 되는 것을 출력하면 되는 문제이다. 단순하지만 리스트와 방문을 했다 안했다 하는 방식으로 푸는 문제라 고민이 조금 필요한 문제이다. import java.util.*; class Solution {..

[프로그래머스] 큰 수 만들기- python, java (레벨 2)

https://school.programmers.co.kr/learn/courses/30/lessons/42883 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 문제를 보았을때 알수있는 힌트 k개수 만큼 뺐을때 가장 큰수를 만드는 문제이다. 순조부를 이용하여 모든 경우의 수를 이용할수도 있겠지만 제한 조건에 1000000자리 수가 있다고하니.. 순열, 조합을 이용하면 시간 초과가 날것이다. 그렇기에 다른 방식으로 문제를 풀어야한다. 간단하게 스택 구간을 만들고 그 안에 큰 값을 계속 담게 하고 그보다 큰 값이 나오면 변경해주는 식으로 문제를 풀어주면..

[프로그래머스] 실패율 - python (레벨 1)

https://programmers.co.kr/learn/courses/30/lessons/42889 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스 programmers.co.kr 문제 설명 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스테이지 차이가 너무 큰 것이 문제였다. 이 문제를 어떻게 할까 고민 한 그녀는 동적으로 게임 시간을 늘려서 난이도를 조절하기로 했다. 역시 슈퍼 개발자라 대부분의 로직..

[프로그래머스] 이중우선순위큐 - python (레벨 3)

https://programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 문제 설명 이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다. 명령어 수신 탑(높이) I 숫자 큐에 주어진 숫자를 삽입합니다. D 1 큐에서 최댓값을 삭제합니다. D -1 큐에서 최솟값을 삭제합니다. 이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요. 제한사항 operations는 길이가 1 이상 1,000,000 이하인 문자열 배열입니다. operations의..

[프로그래머스] 디스크 컨트롤러- python (레벨 3)

https://programmers.co.kr/learn/courses/30/lessons/42627 코딩테스트 연습 - 디스크 컨트롤러 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를 programmers.co.kr 문제 설명 하드디스크는 한 번에 하나의 작업만 수행할 수 있습니다. 디스크 컨트롤러를 구현하는 방법은 여러 가지가 있습니다. 가장 일반적인 방법은 요청이 들어온 순서대로 처리하는 것입니다. 예를들어 - 0ms 시점에 3ms가 소요되는 A작업 요청 - 1ms 시점에 9ms가 소요되는 B작업 요청 - 2ms 시점에 6ms가 소요되는 C작업 요청 와 같은 요청이..

[프로그래머스] 더 맵게- python (레벨 2)

https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 풀이 문제를 보았을때 알수있는 힌트 단순하게 생각하면 정렬을 하고 최소 값 두개를 뽑아서 조건에 맞는 식을 다시 집어넣고 정렬하고 하면 문제는 풀수있다. # 단순하게 리스트로 풀었을 경우 def solution(scoville, K): answer =0 count=0 scoville.sort() while scoville[0]

[프로그래머스] 등굣길 - python (레벨 3)

https://programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr 풀이 문제를 보았을때 알수있는 힌트 오른쪽, 아래로만 움직이는 문제이며 웅덩이가 있는 곳은 지나가지 않는 문제이다. dfs,bfs로 풀면 아마 시간 초과가 날 확률이 높을것이다. 이것은 dp로 풀어야한다. 시작하는 위치에서 오른쪽 왼쪽으로 이동시킬수있는 갯수를 추가하는 형식으로 진행하면 쉽게 풀 수 있는 문제이다. def solution(m, n, p..

[프로그래머스] 정수 삼각형 - python (레벨 3)

https://programmers.co.kr/learn/courses/30/lessons/43105 코딩테스트 연습 - 정수 삼각형 [[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30 programmers.co.kr 풀이 문제를 보았을때 알수있는 힌트 bfs나 dfs를 통해 백트래킹해서 문제를 푼다면 시간 초과가 날수 있는 문제이다. triangle 과 같은 리스트의 dp를 만들고 이전의 값의 더하면서 최대값이 되는 값을 유지하며 진행하면 쉽게 풀리는 문제이다. 예를 들어 1행의 7을 2행의 3과 8에 넣어 2행 dp에 [10,15]를 가지게 한다. 다음으로 2행의에서 3행으로 갈수있는 방법으로 2행의 1번째는 3행의 1,2번째를 갈수있고[18,11..

[프로그래머스] 가장 큰 정사각형 찾기 - python (레벨 2)

https://programmers.co.kr/learn/courses/30/lessons/12905 코딩테스트 연습 - 가장 큰 정사각형 찾기 [[0,1,1,1],[1,1,1,1],[1,1,1,1],[0,0,1,0]] 9 programmers.co.kr 풀이 문제를 보았을때 알수있는 힌트 이러한 정사각형 문제는 많이 풀어봐야지 감이 잡힐것같다. 40분 가량 봐도 답이 나오지 않아서 다른 사람들의 푸는 방식을 통해 힌트를 얻고 풀었다. 2가지 조건을 두고 문제를 푼다. 1. i+1,j+1이 0이면 넘어가고 1인 경우 2번의 조건을 수행한다. 2. i,j와 i+1,j와 i,j+1의 값 중 최소 값에 1을 더하여 i+1,j+1에 넣는다. 이것을 반복하여 나온 board의 최대값을 제곱하면 끝나는 문제이다. ..

[프로그래머스] 타겟 넘버 - python (레벨 2)

https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 풀이 문제를 보았을때 알수있는 힌트 숫자 마다 +,- 를 반복해서 계산하고 마지막은 target과 맞는지 확인하면 되는 문제다. 반복적으로 모든 넘버를 계산하기에 DFS로 풀면 쉽게 풀릴듯했다. def dfs(number,count,num_sum,result): if len(number)==count: result.append(num_su..

728x90