개발지/코테 (23) 썸네일형 리스트형 [프로그래머스] 코테연습 - 기능개발 (lv.2) - 내 방법 풀이 처음엔 배열로 풀 수 있을 거 같아, 배열로 풀어볼라 했으나 큐문제이므로 큐를 이용하기로 마음먹었다. 어제 풀은 다리를 지나는 트럭에서 생각을 전환해서 풀었다. 큐를 2개 생성하고, day를 설정해 while문을 돌렸다. 작업큐와 속도큐에서 peek하여 작업이 완료되었다면 cnt를 증가시키며 진행률이 100%이하인 작업이 나올 때까지 poll한다. 해당일에 배포 가능한 작업(cnt > 0)이 있었다면 arrList에 추가. 작업큐가 빌 때까지 while문 반복 후 종료. answer에 arrList값 추가하여 리턴 import java.util.*; class Solution { public int[] solution(int[] progresses, int[] speeds) { Arra.. [프로그래머스] 코테연습 - 다리를 지나는 트럭 (lv.2) - 내 방법 풀이 전형적인 큐를 사용하는 문제였다. 고속도로 요금소와 마찬가지로 FIFO 구조의 자료였기 때문에 처음에 큐에 모든 트럭을 넣어놓고 다리 길이와 같은 길이의 배열을 생성하여 트럭을 올리는 방법을 생각했다. 그러나 코드의 효율성이 떨어져서, 접근 방법을 다시 고민하기 위해 구글링을 했다. 구글링 후, 다리 = 큐 로 방향을 설정하고 코드를 짰다. 큐의 합산이 제한 하중을 넘지 않을 때 트럭을 올리며 시간을 증가시킨다. 제한 하중을 넘었다면 0을 추가하여 올린 트럭을 이동시킨다. 큐의 길이가 다리 길이와 같아졌을 때, 트럭을 다리위에서 내린다. import java.util.*; class Solution { public int solution(int bridge_length, int weig.. [프로그래머스] 코테연습 - 주식 가격 (lv.2) - 내 방법 풀이 어제에 이어 공부한 스택/큐 문제를 풀었으나, 평이한 난이도의 문제였고 굳이 스택/큐를 쓰지 않아도 되는 문제였다. 특이하게 주식의 값을 가지고 그 값이 몇초동안 떨어지지 않았는지를 각 가격별로 구하여 리턴하는 문제였다. 해당 주식의 값을 설정한 뒤 그 뒤의 가격들과 비교하면서 시간을 상승시키다가 떨어지면 반복문을 종료하는 식으로 코드를 구성했다. class Solution { public int[] solution(int[] prices) { int[] answer = new int[prices.length]; for (int i = 0; i < prices.length; i++) { int price = prices[i]; for (int j = i+1; j < prices.leng.. [프로그래머스] 코테연습 - [PCCP 기출문제] 1번(lv.1) - 내 방법 풀이 게임에 익숙해서, 프로세스를 이해하기 쉬웠던 문제였다. 조건을 3개로 나눠, 순서대로 최대체력, 공격 유무, 추가 회복 유무에 대해서 생각했다. 이후 제한 조건을 하나씩 확인하며 추가해 나갔다. 잘하는 사람일수록 선언할 변수를 줄이는 방법으로 코드를 짤 것 같다. 내 코드는 내가 이해하기는 쉬웠지만 다른 사람의 평가는 어떨지 궁금한데, 일단 시간의 흐름에 따라 체력의 변화와 공격의 유무를 적용시키는 코드를 짰다. 마지막 공격 이후에 체력을 리턴하면 됨으로, while 문으로 시작했다. 만약 게임에 익숙하지 않았다면 생각보다 중간에 빼먹는 계산이 생길수 밖에 없었을 거 같다. class Solution { public int solution(int[] bandage, int health,.. [프로그래머스] 코테연습 - 프로세스(lv.2) - 내 방법 풀이 문제 유형을 보고 Queue를 활용하여 풀 생각을 했다. 또한 Queue의 대표적 활용 예시이기 때문에 Queue를 선언했고, 중요도와 제한조건을 생각해서 max를 구할 생각을 했다. 처음에 예시를 보고 priorities에 작업마다 우선순위(숫자 1~9)와 이름(A~Z)가 배열로 제공된 줄 알고 HashMap로 풀어야 하나 생각했는데 우선순위 배열만 주어져서 실행된 작업이 location에 있던 작업인지 어떻게 확인할 지 고민되었다. location의 값을 조정하며, 큐에서 poll할 때 location이 0이었다면 구하고자 하는 값을 구할 수 있을거라고 생각했다. import java.util.*; class Solution { public int solution(int[] prio.. [프로그래머스] 코테연습 - 숫자의 표현(lv.2) - 내 방법 풀이 자연수 n을 연속한 자연수로 표현하는 방법의 갯수를 표현 하는 방법을 구하는 문제. '연속'이 핵심 힌트 였다. 연속한 자연수를 만들기 위해 반복문을 사용하였다. 첫번째 숫자를 정하는 반복문 안에 더해줄 숫자를 정하는 이중 반복문을 작성했다. 연속한 자연수를 더해주다가 n과 같아지면 answer 증가 또는 초과되면 반복문을 종료하였다. 최근 풀은 문제들 중에 평이한 난이도의 문제였다. import java.util.*; class Solution { public int solution(int n) { int answer = 0; for (int i = 1; i [프로그래머스] 코테연습 - 체육복(lv.1) - 내 방법 풀이 체육복을 전부 가졌다고 가정한 N길이의 배열 선언 후, lost 배열과 reserve배열을 순회하며 해당하는 번호의 학생들의 배열값을 조정해주었다. 이후 앞에서부터 순회하며 체육복의 여유가 있는 사람이 앞 번호의 친구로부터 체육복을 빌리는 것을 가정하여 알고리즘을 구성했지만, 배열에서 뒷번호의 친구에게밖에 못 빌리는 다음 예시와 ( { 0, 1, 1, 0} ) 같은 배열의 상황을 고려하지 못 해, 테스트의 여러개에서 실패가 낫다. 이후 조건을 수정하여, 앞 뒤 사람에게 빌리도록 코드에 반영하여 번호의 숫자가 -1, 즉 체육복이 없는 사람을 n에서 빼주는 계산으로 통과했다. import java.util.*; class Solution { public int solution(int n, .. [프로그래머스] 코테연습 - 점프와 순간 이동(lv.2) - 내 방법 풀이 간단한 문제일거라 생각했다. 처음 짝수와 홀수를 나누어 풀 생각을 했고, 현재 위치를 m으로 설정하여 m이 n과 같아질 때까지 계산하는 방법으로 접근했다. 처음에 무조건 1을 점프하고, 그 뒤 m이 n과 같아질 때까지 while문을 돌려 같아지는 방법을 생각해봤지만 시도한 코드들이 맞지 않았고, 다시 수학적 접근을 해보려고 했다. n의 소수여부가 상관있는지 생각해봤지만 풀이에 큰 발전은 없었고, 계속 경우의 수인 코드를 생각해보았다. 끝없이 늘어나 결국 다른 사람의 답을 참고하게 되었다. - 다른 사람 방법 풀이 찾아본 모든 풀이는 n에서 낮아지는 방법을 사용했다. 현재 위치를 설정하여 계산하는 방법은 없었다. Top - down 방식의 풀이라고 하는데, 아직 접해본 적이 없었다. 내가.. [프로그래머스] 코테연습 - 폰켓몬(lv.1) - 내 방법 풀이 간단한 수학 문제였다. 설명이 길지만 요점은 박사님 연구실에 있는 폰켓몬 중 N / 2 마리를 데려갈 때 가장 많이 데려갈 수 있는 종류의 수를 구하면 되는 문제였다. HashMap에 키가 중복되지 않는 점을 이용해, 폰켓몬 번호를 key로 value를 넣었다. HashMap의 사이즈가 곧 폰켓몬의 종류 수이므로, 종류수보다 N / 2가 작다면 해쉬 사이즈 리턴. 종류수가 (N / 2)보다 크다면 N / 2 를 리턴하도록 했다. import java.util.*; class Solution { public int solution(int[] nums) { int answer = 0; // 종류를 검사하여 해쉬에 넣기. 키값은 중복 안되므로, 해쉬의 사이즈 == 폰켓몬 종류 갯수 // (폰.. [프로그래머스] 코테연습 - 문자열 내 맘대로 정렬하기(lv.1) - 내 방법 풀이 주어지는 문자열 배열을 int n번 인덱스 문자를 기준으로 정렬하는 문제 처음에 보고 n번 인덱스 문자를 꺼내서 char 배열을 만들어 풀려고 했지만, 정렬 후 문자열 매칭이 어려웠다. 다음 생각한 방법은 n번 인덱스 문자를 strings[i] 앞에 붙여 새로운 배열을 만들어 정렬한 후 맨 앞 문자를 뺀 나머지 문자열을 answer배열에 저장하여 리턴했다. import java.util.*; class Solution { public String[] solution(String[] strings, int n) { String[] answer = new String[strings.length]; String[] arr = new String[strings.length]; for (int .. 이전 1 2 3 다음