반응형

전체 글 126

[프로그래머스/Java] 다리를 지나는 트럭(스택/큐) 풀이

프로그래머스 알고리즘 고득점 Kit 스택&큐 파트 중 '다리를 지나는 트럭' 문제를 Java로 풀어보았다.https://school.programmers.co.kr/learn/courses/30/lessons/42583 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  on_bridge라는 이름의 queue를 만들어서 트럭이 다리 위에 올라가는 상황에서 queue에 트럭의 weight를 add 해줬다. add 해줄 때 cur_weight에 무게를 더해주고, poll 할 때 빼주어서, 현재 다리 위에 올라가 있는 트럭들의 무게의 합을 확인한다. 만약 add 해줄 요소가 없다면 0을 add 해줘서, 다리가 ..

[프로그래머스/Java] 프로세스(스택/큐) 풀이

알고리즘 고득점 Kit의 스택&큐 문제 중 하나인 '프로세스'를 자바로 풀어보았다. https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr   우선 큐를 만들어서 인덱스를 모두 넣어주는 것으로 풀이를 시작했다. 그다음, 현재 남아있는 인덱스 중 최댓값을 찾는 것으로 초기 설정을 마쳤다. 그다음 while문을 통해서, 현재 poll 된 인덱스의 priority 값이 최댓값이 아니면 다시 넣어주고, 최댓값이라면 poll 된 채로 두고, cur_max를 그다음 max 값으로 바꾸는 작업을 반복한다. 현재..

[프로그래머스/Java] 기능개발(스택/큐) 풀이

프로그래머스 알고리즘 고득점 Kit의 스택&큐 문제 중 하나인 '기능 개발'을 자바로 풀어보았다. https://school.programmers.co.kr/learn/courses/30/lessons/42586 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  아래와 같이 코드를 작성했다. 현재 element(i번째 element)가 100 이상이 되기 위해서 필요한 일수를 구하고, 그 일수에 이미 완성되어 있는 뒤 기능들의 수를 세어주는 방식을 사용했다.다른 사람들의 풀이를 보니, 일수를 구해준 다음 해당 일수의 index에 1을 더해주는 방식을 사용하기도 했다. 하지만 이렇게 하면 코드는 훨씬 간단..

[프로그래머스/Java] 같은 숫자는 싫어(스택/큐) 풀이

프로그래머스 알고리즘 고득점 Kit의 스택&큐 문제 중 하나인 '같은 숫자는 싫어'를 자바로 풀어보았다. https://school.programmers.co.kr/learn/courses/30/lessons/12906 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  import java.util.*;public class Solution { public int[] solution(int []arr) { List answer = new ArrayList(); int pre = -1; for (int num : arr) { if (num ==..

[Spring Boot] 스프링부트로 test하기

스프링부트에서는 배포나 직접 localhost로 접근하여 여러 가지 경우를 테스트해 보는 것 말고 더 편하게 내가 쓴 코드를 테스트할 수 있는 기능을 제공한다. 그래서 테스트 코드를 어떻게 작성해야 하는지를 기록해보려 한다. 주로 JUnit을 활용한 테스트 방법을 기술한다.  아래 책을 공부 중이다. 신선영, 『스프링 부트3 백엔드 개발자 되기』, 골든레빗(2024)  1. 기본적인 test 방식우선 테스트 코드를 작성할 때는 크게 아래의 흐름을 따른다. given (이런 상황이 주어졌는데)when (이렇게 됐을 때)then (결과가 이렇게 되어야 해) 예를 들어, 기본적인 회원가입 로직을 테스트하기 위해서는 given으로 회원가입하려는 멤버 정보가 주어져야 한다. 그리고 when에서는 회원가입하는 상황..

[프로그래머스/Java] 완주하지 못한 선수(Hash 문제) 풀이

프로그래머스 알고리즘 고득점 Kit의 hash 문제인 '완주하지 못한 선수'를 Java로 풀어보았다.https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  우선 Hash 문제 Kit인 만큼 먼저 HashMap을 이용해서 풀어보았다. 사실 map에서 굳이 element를 삭제하지 않고 한번 더 반복문을 실행해서 value가 0이 아닌 요소를 찾아도 되지만, 굳이 한 번 더 반복문을 쓸 필요는 없을 것 같아서, remove를 하는 선택을 했다. 하지만 remove를 한다고 하더라도, 인덱스로 접근할 ..

[프로그래머스/Java] 베스트앨범(Hash 문제) 풀이

프로그래머스 알고리즘 고득점 Kit의 Hash 문제에 해당하는 베스트앨범을 자바로 풀어보았다. https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  해결을 위해 아래 코드처럼 작성해 보았다. 단순한 방법으로 HashMap을 선언하여, HashMap의 key를 genre 이름으로, value를 해당 장르의 총 재생수로 설정하여, 재생수를 모두 센 후, max값을 찾아 하나씩 삭제하며 처리하는 방식이다. 여기서 굳이 answer 배열에 바로 추가하지 않고, 먼저 list에 넣은 후 answer 배열..

[프로그래머스/Java] 의상(Hash 문제) 풀이

https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 앞선 해시 문제들은 대체로 그냥 배열을 사용하고, index를 key화 시키거나 sort를 하는 등의 방식으로 해시를 사용했다면, 이 문제에서는 HashMap을 사용하여 문제를 풀었다. clothes 배열 내 원소 각각이 [의상의 이름, 의상의 종류] 로 주어지므로, 해당 원소 내 의상의 종류를 key로 설정하고 value를 해당 의상의 종류 내 의상의 이름 개수, 즉 해당 의상의 종류가 몇 가지 존재하는지로 정했다. 우리가 알고자 하는 것은 ..

카테고리 없음 2025.03.04

[프로그래머스/Java] 전화번호 목록(hash 문제) 풀이

프로그래머스 알고리즘 고득점 Kit의 해시 문제인 전화번호 목록을 자바로 풀어보았다. https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  이 문제는 sort를 이용하는 것이 핵심이다. sort를 이용하지 않으면, 이중 루프를 이용하여 모든 요소를 서로 비교해야 하지만, sort를 이용하면 이웃한 element끼리만 비교하면 되기 때문이다.따라서 우선 Arrays.sort() 함수를 통해 주어진 String array를 정렬한 후, 이웃한 element들끼리만 비교해 준다. 정렬이 되어있는 상태..

[프로그래머스/Java] 폰켄몬(Hash 문제) 풀이

프로그래머스 알고리즘 고득점 Kit의 해시 문제 중 하나인 폰켄몬을 풀어봤다. https://school.programmers.co.kr/learn/courses/30/lessons/1845?language=java 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr  지속적으로 C언어로 알고리즘 문제를 풀고 코딩테스트를 치뤄왔으나, 빠르게 문제를 풀어야 하는 상황에서 C언어의 한계가 너무 명확했고, 알고리즘 때문에 C언어를 계속 공부하기도 어렵겠다고 판단해서, 앞으로 주 개발언어로 사용할 Java로 알고리즘 문제를 풀이하는데 차차 익숙해지고자 한다. 그래서 쉬운 문제부터 어려운 문제까지 섹터별로 나뉜 고득..

728x90
반응형