📖 문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
💡 풀이 방식
• Map<무게, 무게 갯수>
1. 무게 배열을 오름차순 정렬한다.
→ 오름차순 정렬했으므로 무게가 같은 경우와 (2/3, 2/4, 3/4)일 때만 고려해 접근
2. 기존 key값과 같으면 체크해 정답 + 1
해당 예제 [100, 180, 360, 100, 270]의 경우
Map에 입력되는 값은 (100, 2), (180, 1), (270,1) (360,1)이다.
정답이 업데이트 되는 상황은
1) 두 번째 100일 때 +1
2) 270도일 때, (b) 270 * 2.0 / 3.0 = 180.0이므로 +1
3) 360도 일 때, (c) 360 * 1.0 / 2.0 에서 +1, (d) 360 * 3.0 / 4.0에서 +1된다.
💥 유의사항
시간 초과 이슈로 인해 for문을 한 번만 사용해야 한다.
→ 이를 위해 사전 정렬해야 한다.
🔺 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
import java.util.*;
class Solution {
public long solution(int[] weights) {
long answer = 0;
Arrays.sort(weights); // 오름차순 정렬
Map<Double, Integer> map = new HashMap<>(); // 무게 weight, 무게 갯수
for(int w : weights) {
double a = w * 1.0; // 무게가 같은 경우
double b = (w * 2.0) / 3.0; // 2/3인 경우
double c = (w * 1.0) / 2.0; // 2/4인 경우
double d = (w * 3.0) / 4.0; // 3/4인 경우
// 기존 key값과 같으면 체크해 정답 + 1
if(map.containsKey(a)) answer += map.get(a);
if(map.containsKey(b)) answer += map.get(b);
if(map.containsKey(c)) answer += map.get(c);
if(map.containsKey(d)) answer += map.get(d);
map.put((w * 1.0), map.getOrDefault((w * 1.0), 0) + 1);
}
return answer;
}
}
|
cs |
➕ 다른 풀이 방식
이분 탐색 활용
[Java] 프로그래머스 시소 짝꿍
문제 https://school.programmers.co.kr/learn/courses/30/lessons/152996?language=java 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기
0713k.tistory.com
💦 어려웠던 점
Map을 사용할 생각을 하지 못 했다.
자꾸 시간초과가 떠서 어떻게 해야할지 몰랐다.
🧐 새로 알게 된 내용
시간초과 이슈 해결 - for문을 한 번만 돌린다. - 배열을 정렬한다.
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
[Java] 시소 짝꿍 - Lv2 프로그래머스
https://school.programmers.co.kr/learn/courses/30/lessons/152996 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞
mag1c.tistory.com
'코테 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Lv. 3] 최고의 집합(JAVA) (0) | 2024.01.17 |
---|---|
[프로그래머스/Lv. 2] 땅따먹기 (JAVA) (0) | 2024.01.16 |
[프로그래머스/Lv. 2] 무인도 여행 (JAVA) (0) | 2024.01.13 |
[프로그래머스/Lv. 2] 호텔 대실 (JAVA) (0) | 2024.01.13 |
[프로그래머스/Level2] 택배 배달과 수거하기 (JAVA) (0) | 2024.01.07 |