본문 바로가기

코딩테스트/문제풀이 팁15

[Greedy] 구명보트 https://school.programmers.co.kr/learn/courses/30/lessons/42885 그리디 알고리즘 - 최적의 값을 구해야 하는 상황에서 사용되는 근시안적인 방법론으로 ‘각 단계에서 최적이라고 생각되는 것을 선택’ 해 나가는 방식으로 진행하여 최종적인 해답에 도달하는 알고리즘이다. - 이때, 항상 최적의 값을 보장하는것이 아니라 최적의 값의 ‘근사한 값’을 목표로 하고 있다. - 주로 문제를 분할 가능한 문제들로 분할한 뒤, 각 문제들에 대한 최적해를 구한 뒤 이를 결합하여 전체 문제의 최적해를 구하는 경우에 주로 사용된다. 위 문제에서, 주목해야 할 포인트가 몇가지 있다. 1. 구명보트는 최대 2명씩 밖에 탈 수 없다. 2. 2명이 탈때, 문제에서 주어지는 무게제한(lim.. 2024. 3. 27.
[공원산책] 좌표표현 https://school.programmers.co.kr/learn/courses/30/lessons/172928 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 가로 길이 W ( sx ) 세로 길이 H ( sy ) ( 0 , 0 ) ( 0 , 1 ) ( 0 , 2 ) ( 1 , 0 ) ( 2 , 0 ) ( H-1, W-1 ) 좌표 표현 : (sy, sx) class Solution { public int[] solution(String[] park, String[] routes) { int sx = 0; // 이동 후 x좌표 int sy = 0; // .. 2024. 3. 24.
[Kakao] HashMap의 value가HashSet일때 - 신고결과받기 https://school.programmers.co.kr/learn/courses/30/lessons/92334 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 풀이에 필요한 Map 정의 및 초기화 key는 유저아이디, value는 key를 신고한 유저의 아이디의 Set을 가진 Map 동일한 유저에 대한 신고횟수는 1회로 처리하기 때문에 중복을 없애기 위해 Set을 Value로 함 key는 유저아이디, value는 임의의 인덱스를 가진 Map을 정의 int[] answer = new int[id_list.length]; HashMap idxMap =.. 2024. 3. 19.
[그리디] Kakao - 두 큐 합 같게 만들기 https://school.programmers.co.kr/learn/courses/30/lessons/118667#qna 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 접근 알고리즘 개념 - 그리디 탐욕 알고리즘은 최적해를 구하는 데에 사용되는 근사적인 방법으로,여러 경우 중 하나를 결정해야 할 때마다 그 순간에 최적이라고 생각되는 것을 선택해 나가는 방식으로 진행하여 최종적인 해답에 도달 합니다. ->while(true)로 돌면서 제약조건을 걸어 최적의 해를 도출한다. 문제 해결 - 최적해를 구하기 위한 결정 포인트 정리 1. 모든 원소의 합이 홀수인.. 2024. 3. 18.
[유클리드 호제법] 숫자 카드 나누기 https://school.programmers.co.kr/learn/courses/30/lessons/135807 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr class Solution { public int solution(int[] arrayA, int[] arrayB) { int answer = 0; int gcdA = arrayA[0]; int gcdB = arrayB[0]; // 최대 공약수 구하기 for(int i=1;i 2024. 3. 17.
int형 2차원 배열 복합정렬조건 https://school.programmers.co.kr/learn/courses/30/lessons/147354 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 위 문제의 경우 1. 조건에 맞게 2차원 배열 sorting 2. 해당 튜플의 모든 인자값을 mod로 계산해 누적합 구하고, 이들을 List 배열에 저장 3. List에 저장되어 있는 mod의 누적합 값들 XOR 연산 후 값 반환 세가지 순서로 진행했다. 여기서 주의해야 할 점은 복합 정렬에 조건을 람다식으로 표현하는 것이다. 아래의 코드를 살펴보자 //튜플의 col 번째 컬럼값 기준으로 오름차.. 2024. 3. 16.