알고리즘 문제 풀이

알고리즘 문제 풀이/정렬

[Java] 프로그래머스 : 프로세스

[Java] 프로그래머스 : 프로세스 https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 2번째 테스트 케이스를 보면 가장 처음 인덱스에 있는 값이 5번째로 실행되는 것을 확인할 수 있다. 9다음 1이 다음 우선순위가 되도록 하기 위해서 가장 먼저 떠올린 것은, priorities를 내림차순 정렬한 배열을 하나 더 만드는 것이었다. 큐에는 priorities 원본 배열 값을 전부 집어 넣고, 내림차순된 배열의 값과 큐의 특정 값이 일치하는 경..

알고리즘 문제 풀이/정렬

[Java] 프로그래머스 : 튜플

[Java] 프로그래머스 : 튜플 https://school.programmers.co.kr/learn/courses/30/lessons/64065 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 두 케이스가 어떻게 [2, 1, 3, 4]로 같은 값이 나오게 구현할 것인지 알아내는 것이 어려웠던 문제였다. 집합은 원소의 순서가 바뀌어도 상관없다는 문제의 조건 때문에 두 케이스는 같은 결과가 나올 수 있었다. 만약 두번째 케이스를 각 집합의 길이를 기준으로 오름차순 정렬하면 아래와 같다. {{2},{2,1},{1,2,3},{1,2,4,3}} 반복문으로 ..

알고리즘 문제 풀이

[Java] 프로그래머스 : 의상

[Java] 프로그래머스 : 의상 https://school.programmers.co.kr/learn/courses/30/lessons/42578 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 HashMap으로 정리한다고 가정하면, 예제 1은 다음과 같이 정리된다. headgear : ["yellow_hat", "green-turban"] eyewear : ["blue-sunglasses"] 문제 조건에 의해 의상은 종류별로 1개씩만 입을 수 있고, 특정 종류의 옷을 입지 않는 것도 가능하다. 그러나 최소 한 개의 의상은 입어야 한다. headge..

알고리즘 문제 풀이

[Java] 프로그래머스 : n^2 배열 자르기

[Java] 프로그래머스 : n^2 배열 자르기 https://school.programmers.co.kr/learn/courses/30/lessons/87390 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 n = 4일 때의 배열은 다음과 같다. 잘 보면 행의 위치나 열의 위치 중에 더 큰 값으로 값이 결정되는 것을 확인할 수 있다. 빨간색 구간은 행과 열이 3으로 같은 구간이다. 파란색 구간의 경우 행 또는 열 한쪽이 더 큰 값을 가지므로 더 큰 값으로 할당되었다. answer라는 배열이 일차원 배열을 요구하므로, 반복문을 left부터 right..

알고리즘 문제 풀이

[Java] 프로그래머스 : 괄호 회전하기

[Java] 프로그래머스 : 괄호 회전하기 https://school.programmers.co.kr/learn/courses/30/lessons/76502 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 괄호 열고 닫는 스택 관련 문제는 다 비슷한 방식으로 풀리기 때문에 걱정이 없었으나, 이번에는 주어진 문자열을 회전하는 방법이 잘 떠오르지 않았습니다. 올바른 괄호 문자열 검증 방법 여는 괄호가 나올 경우 push 닫는 괄호가 나올 경우 스택이 비어있으면 break, 닫는 괄호가 나올 경우 스택 맨 위의 값이 짝이 맞는 여는 괄호일 경우 pop 마지..

알고리즘 문제 풀이/정렬

[Java] 프로그래머스 : 귤 고르기

[Java] 프로그래머스 : 귤 고르기 https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 주어진 배열을 빈도수를 기준으로 내림차순 한다음, k만큼 귤을 담으면서 귤이 총 몇 종류가 담기게 되는지 계산하면 되는 문제. import java.util.*; class Solution { public int solution(int k, int[] tangerine) { int answer = 0; HashMap map = new HashMap(); f..

알고리즘 문제 풀이

[Java] 프로그래머스 : 예상 대진표

[Java] 프로그래머스 : 예상 대진표 https://school.programmers.co.kr/learn/courses/30/lessons/12985 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 토너먼트가 진행될 때마다 변하게 되는 순서에 포커스를 두어야 하는 문제입니다. 첫번째 케이스를 예시로 들면, 1~8번까지의 참가자는 다음과 같이 순서를 부여받게 됩니다. 4번 참가자와 7번 참가자가 몇 번째에 만나는지 알기 위해서는 각각의 숫자를 반복문을 돌리면서 새로 부여될 번호로 바꾸고, 두 숫자가 같아질 때까지 몇 번이나 순회를 하였는지를 구하면..

알고리즘 문제 풀이

[Java] 프로그래머스 : 구명보트

[Java] 프로그래머스 : 구명보트 https://school.programmers.co.kr/learn/courses/30/lessons/42885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 limit가 100일 때 다음과 같은 테스트 케이스를 가정한다. [40, 70, 20, 50] -> 제일 가벼운 애들부터 태우는 경우 20 + 40 answer++ 50 + 70 > 100 -> answer+= 2 이런 방식으로는 3개의 구명보트가 필요하다. 50인 친구에 대한 구명보트와 70인 친구에 대한 구명보트가 각각 필요하기 때문이..

알고리즘 문제 풀이

[Java] 프로그래머스 : 크레인 인형뽑기 게임

[Java] 프로그래머스 : 크레인 인형뽑기 게임 https://school.programmers.co.kr/learn/courses/30/lessons/64061 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 바구니는 스택으로 구현하고, 집어들어 올린 인형과 스택의 최상단에 있는 값이 일치할 경우, answer에 2점씩 추가해주면 된다. moves 각각의 값은 집게가 움직이는 고정된 열이며, 행은 board.length를 순회하도록 하여 집게의 움직임을 구현할 수 있다. 인형을 집었으면 해당 위치를 0으로 만들어서 나중에 집게가 똑같은 위치를 오게..

알고리즘 문제 풀이

[Java] 프로그래머스 : 달리기 경주

[Java] 프로그래머스 : 달리기 경주 https://xn--school-he5x.programmers.co.kr/learn/courses/30/lessons/178871?language=java 접근 처음에는 '그냥 리스트로 받아서 각각 스와이핑 하면 되는 거 아닌가?' 라고 생각했다. 리스트의 indexOf를 사용하면 해당 값에 대한 인덱스 값을 쉽게 찾아낼 수 있기 때문이었다. import java.util.*; class Solution { public String[] solution(String[] players, String[] callings) { String[] answer = new String[players.length]; List list = new ArrayList(); for (..

알고리즘 문제 풀이

[Java] 프로그래머스 : 둘만의 암호

[Java] 프로그래머스 : 둘만의 암호 https://school.programmers.co.kr/learn/courses/30/lessons/155652 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 문자열 s를 문자 단위로 순회하면서 각각의 값을 Strnig으로 변환하여 skip에 값이 있는 경우를 건너뛰도록 하는 방식으로 접근했다. 코드1 class Solution { public String solution(String str, String skip, int index) { StringBuilder sb = new StringBuilder(..

알고리즘 문제 풀이

[Java] 프로그래머스 : 체육복

[Java] 프로그래머스 : 체육복 https://school.programmers.co.kr/learn/courses/30/lessons/42862 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 '여벌 체육복을 가져온 학생이 도난 당했을 경우를 가정하고, 이 학생은 다른 학생들에게 체육복을 빌려줄 수 없다.' lost와 reserve에 동시에 존재하는 학생인 경우, 결국 체육복이 하나뿐이므로 자기만 입을 수 있다는 말이다. n= 6, lost = [6, 4, 2], reserve = [1, 4, 5], return = 5이다. 이때 4가 위의 케이..

lazarus0320
'알고리즘 문제 풀이' 카테고리의 글 목록