๐ ๋ฌธ์
์ค๋ ธ์ฐํ์ด์์ ํธํ ์ ์ด์ํ๊ณ ์๋ ์ค์นดํผ๋ ํธํ ์ ํฌ์ํ๋ ค๋ ๊ณ ๊ฐ๋ค์๊ฒ ๋ฐฉ์ ๋ฐฐ์ ํ๋ ค ํฉ๋๋ค. ํธํ ์๋ ๋ฐฉ์ด ์ด k๊ฐ ์์ผ๋ฉฐ, ๊ฐ๊ฐ์ ๋ฐฉ์ 1๋ฒ๋ถํฐ k๋ฒ๊น์ง ๋ฒํธ๋ก ๊ตฌ๋ถํ๊ณ ์์ต๋๋ค. ์ฒ์์๋ ๋ชจ๋ ๋ฐฉ์ด ๋น์ด ์์ผ๋ฉฐ ์ค์นดํผ๋ ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ๋ฐ๋ผ ๊ณ ๊ฐ์๊ฒ ๋ฐฉ์ ๋ฐฐ์ ํ๋ ค๊ณ ํฉ๋๋ค.
- ํ ๋ฒ์ ํ ๋ช ์ฉ ์ ์ฒญํ ์์๋๋ก ๋ฐฉ์ ๋ฐฐ์ ํฉ๋๋ค.
- ๊ณ ๊ฐ์ ํฌ์ํ๊ธฐ ์ํ๋ ๋ฐฉ ๋ฒํธ๋ฅผ ์ ์ถํฉ๋๋ค.
- ๊ณ ๊ฐ์ด ์ํ๋ ๋ฐฉ์ด ๋น์ด ์๋ค๋ฉด ์ฆ์ ๋ฐฐ์ ํฉ๋๋ค.
- ๊ณ ๊ฐ์ด ์ํ๋ ๋ฐฉ์ด ์ด๋ฏธ ๋ฐฐ์ ๋์ด ์์ผ๋ฉด ์ํ๋ ๋ฐฉ๋ณด๋ค ๋ฒํธ๊ฐ ํฌ๋ฉด์ ๋น์ด์๋ ๋ฐฉ ์ค ๊ฐ์ฅ ๋ฒํธ๊ฐ ์์ ๋ฐฉ์ ๋ฐฐ์ ํฉ๋๋ค.
์ ์ฒด ๋ฐฉ ๊ฐ์ k์ ๊ณ ๊ฐ๋ค์ด ์ํ๋ ๋ฐฉ ๋ฒํธ๊ฐ ์์๋๋ก ๋ค์ด์๋ ๋ฐฐ์ด room_number๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๊ฐ ๊ณ ๊ฐ์๊ฒ ๋ฐฐ์ ๋๋ ๋ฐฉ ๋ฒํธ๋ฅผ ์์๋๋ก ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
๐ ์ ํ์ฌํญ
- k๋ 1 ์ด์ 1012 ์ดํ์ธ ์์ฐ์์ ๋๋ค.
- room_number ๋ฐฐ์ด์ ํฌ๊ธฐ๋ 1 ์ด์ 200,000 ์ดํ์ ๋๋ค.
- room_number ๋ฐฐ์ด ๊ฐ ์์๋ค์ ๊ฐ์ 1 ์ด์ k ์ดํ์ธ ์์ฐ์์ ๋๋ค.
๐ ํ์ด
์๋ฎฌ๋ ์ด์ ์ผ๋ก ํ์๋๋ ๊ธ๋ฐฉ ํด๊ฒฐํ ์ ์์๋ค. ํ์ง๋ง k์ ๋ฒ์๊ฐ ๋๋ฌด ํฌ๊ธฐ ๋๋ฌธ์ ํจ์จ์ฑ์์ ์ ๋ถ ์คํจํ๋ค. ๋ฌธ์ ๋ ์๋์ ๊ฐ์ด ํด๊ฒฐ ํ ์ ์์๋ค.
- ๋ฐฐ์ ๋ฐ์ ๋ฐฉ์ ๋ด๋ Map์ด ํ์ํ๋ค. Map์ ๋ฐฉ ๋ฒํธ์ ๋ค์ ๋ฐฉ ๋ฒํธ๋ฅผ ๋ด๋๋ค.
- ๊ณ ๊ฐ์ด ์ํ๋ ๋ฐฉ์ด ๋น์ด์๋ ๊ฒฝ์ฐ, Map์ ํด๋น ๋ฐฉ ๋ฒํธ์ ๋ค์ ๋ฐฉ ๋ฒํธ๋ฅผ ๋ฃ๋๋ค.
- ๊ณ ๊ฐ์ด ์ํ๋ ๋ฐฉ์ด ๋น์ด์์ง ์๋ ๊ฒฝ์ฐ, ์ฌ๊ท๋ฅผ ํตํด ๋ค์ ๋ฐฉ ๋ฒํธ๋ฅผ ์ฐพ๋๋ค.
๐ ์ฝ๋
import java.util.*;
class Solution {
@Test
void test() {
assertThat(solution(10, new long[]{1,3,4,1,3,1})).isEqualTo(new long[]{1,3,4,2,5,6});
}
private Map<Long, Long> rooms = new HashMap<>();
public long[] solution(long k, long[] room_number) {
long[] answer = new long[room_number.length];
for (int i = 0; i < room_number.length; i++) {
Long roomNumber;
if (!rooms.containsKey(room_number[i])) {
roomNumber = room_number[i];
} else {
roomNumber = findRoomNumber(room_number[i]);
}
answer[i] = roomNumber;
rooms.put(roomNumber, roomNumber + 1);
}
return answer;
}
private Long findRoomNumber(Long roomNumber) {
if (!rooms.containsKey(roomNumber)) return roomNumber;
else {
Long temp = findRoomNumber(rooms.get(roomNumber));
rooms.put(roomNumber, temp);
return temp;
}
}
}
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด์ญ ์ฝ๋ฉ ํ ์คํธ ๋ฌธ์ ํด์ค
“2019๋ ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด์ญ” ๊ณต๊ฐ ์ฑ์ฉ์ ์ํ 1์ฐจ ์ฝ๋ฉ ํ ์คํธ๊ฐ ์ง๋ 2019๋ 11์ 9์ผ ์คํ 2์๋ถํฐ 6์๊น์ง ์ด 4์๊ฐ์ ๊ฑธ์ณ ์งํ๋์์ต๋๋ค. ’19๋ ์ ์ ๊ณต์ฑ 1์ฐจ ์ฝ๋ฉ ํ ์คํธ ์์ 7๋ฌธ์ ๊ฐ ์ถ์ ๋๊ณ 5์๊ฐ์ ํ์ด ์๊ฐ์ด ์ฃผ์ด์ก๋ ๊ฒ๊ณผ๋ ๋ฌ๋ฆฌ ์ด๋ฒ ์ธํด ์ฝ๋ฉ ํ ์คํธ๋ 5๋ฌธ์ ๊ฐ ์ถ์ ๋๊ณ 4์๊ฐ์ ํ์ด ์๊ฐ์ด ์ฃผ์ด์ก์ต๋๋ค. ์ธํด์ ๊ฒฝ์ฐ ์ ์ ๊ณต์ฑ์๋ ๋ฌ๋ฆฌ ์ธํด ๊ณผ์ ์ ํตํด ์ถ๊ฐ […]
tech.kakao.com
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ 2019 ์นด์นด์ค ๋ธ๋ผ์ธ๋ ๊ณต์ฑ: ํ๋ณดํค (Java) (0) | 2020.05.03 |
---|---|
๐ค 2020 ์นด์นด์ค ๋ธ๋ผ์ธ๋ ๊ณต์ฑ: ์๋ฌผ์ ์ ์ด์ (Java) (0) | 2020.04.28 |
๐ ํ๋ก๊ทธ๋๋จธ์ค: Lv3. ์ ๊ตญ ์ฌ์ฌ (Java) (0) | 2020.04.25 |
๐ ์นด์นด์ค 2019 ๊ฒจ์ธ ์ธํด์ญ: ๋ถ๋ ์ฌ์ฉ์(Lv3) (0) | 2020.04.05 |
๐ ์นด์นด์ค 2019 ๊ฒจ์ธ ์ธํด์ญ: ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ ๊ฒ์(Lv2) (0) | 2020.04.01 |