프로그래머스(53)
-
[Programmers] [1차] 캐시
https://school.programmers.co.kr/learn/courses/30/lessons/17680 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 LRU 알고리즘을 구현하는 문제이다. 구현 방법에는 여러가지가 있으며 그 중 Java에서 제공하는 LinkedHashMap을 이용하여 해결하였다. LinkedHashMap는 removeEldestEntry() 라는 메소드를 제공한다. 이 메소드는 put() 호출 시 내부에서 실행되는데 정렬 순서를 기준으로 가장 오래된 Entry를 제거한다. LinkedHashMap의 기본 정렬은 삽입 ..
2023.08.16 -
[Programmers] H-Index
https://school.programmers.co.kr/learn/courses/30/lessons/42747# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 설명도 적고 불친절하여 문제를 이해하는 데 시간을 많이 쓴 문제다. 필자와 같은 느낌을 받은 분들도 적지 않아 보였다. 아래는 참고한 글이다. https://dev-musa.tistory.com/entry/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-Level-2-H..
2023.08.10 -
[Programmers] n^2 배열 자르기
https://school.programmers.co.kr/learn/courses/30/lessons/87390 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 프로그래머스 문제 페이지에서 이해하기 쉽도록 gif를 제공한다. 아래가 입출력 1번에 대한 설명이다. 처음엔 문제에서 주어진대로 배열을 활용하여 해결하려고 했다. 문제는 1차원 배열의 크기가 n*n이 되어야 하는데 n은 최대 10,000,000이다. 즉 arr의 최대 크기는 10,000,000의 제곱(1조)가 된다. 코드를 쓰면서도 배열 크기가 1조짜리인 적은 안 될 거라고 생각했다. ..
2023.08.10 -
[Programmers] 괄호 회전하기
https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 올바른 괄호 문제의 응용 버전이다. 이 문제 또한 스택을 활용할 줄 알고 앞 문제를 풀어봤다면 금방 해결할 수 있다. 문자열을 회전하라고 하는데 간단하게 하면 맨 앞 문자를 떼서 맨 뒤로 붙이면 된다. 코드 import java.util.Stack; class Solution { public int solution(String s) { int answer = 0; for (int i =..
2023.08.09 -
[Programmers] 귤 고르기
https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 k개의 귤을 고를 때 크기별로 분류 시 크기가 다른 종류가 최소가 되도록 해야 한다. 이때 종류의 개수를 구해야 한다. 처음 문제를 보았을 땐 배열로 카운트할까 생각했지만 원소로 어떤 숫자가 들어올지 몰라 초기화하기 까다로웠다. 그래서 숫자별로 그룹핑할까 생각했지만 이 또한 적절하지 않다고 생각했다. 마지막으로 결정한 방법은 HashMap과 정렬을 활용한 방법이다. 먼저 주어진 tan..
2023.08.09 -
[Programmers] 멀리 뛰기
https://school.programmers.co.kr/learn/courses/30/lessons/12914 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 1과 2를 가지고 N까지 가는 모든 경우의 수를 구하는 문제이다. 6까지를 직접 구해보면 다음과 같다. 어디서 많이 본 패턴 아닌가? 그렇다. 피보나치 수열이다. 1과 2를 사용한 N까지의 모든 조합은 피보나치 수열과 같다. 코드 class Solution { public long solution(int n) { long[] dp = new long[n + 1]; if (n == 1) ..
2023.08.08