์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- sw expert academy
- ํญํดํ๋ฌ์ค
- redux-saga
- ํ ์ฝํ ์ฝ
- Python
- ์๋ฐ
- json-server
- C++
- ํ๋ก๊ทธ๋๋จธ์ค
- createSlice
- react-redux
- ๋งค์ผ๋ฉ์ผ
- redux-toolkit
- maeil-mail
- ์ฝ๋ฉํ ์คํธํฉ๊ฒฉ์๋๊ธฐ
- ์๊ณ ๋ฆฌ์ฆ
- useDispatch
- SW
- react-router
- ํญํด99
- ๋ฆฌ์กํธ
- JavaScript
- react
- programmers
- Algorithm
- axios
- Get
- java
- ์ด์ฝํ
- redux
- Today
- Total
Binary Journey
[ํ ์ฝํ ์ฝ1.5 1-10] ๊ฐ์ฅ ๋ง์ด ๋ฐ์ ์ ๋ฌผ ๋ณธ๋ฌธ
[ํ ์ฝํ ์ฝ1.5 1-10] ๊ฐ์ฅ ๋ง์ด ๋ฐ์ ์ ๋ฌผ
binaryJournalist 2025. 1. 14. 15:41๐กํ ์ฝํ ์ฝ ์์ฆ 1.5 1ํ ๋ชจ์ off-site ๋ฌธ์ ํ์ด์ ๋๋ค. (2025.01.12)
๋ฌธ์
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค - ๊ฐ์ฅ ๋ง์ด ๋ฐ์ ์ ๋ฌผ
๋ด์ฉ
์ ๋ฌผ์ ์ง์ ์ ํ๊ธฐ ํ๋ค ๋ ์นด์นด์คํก ์ ๋ฌผํ๊ธฐ ๊ธฐ๋ฅ์ ์ด์ฉํด ์ถํ ์ ๋ฌผ์ ๋ณด๋ผ ์ ์์ต๋๋ค. ๋น์ ์ ์น๊ตฌ๋ค์ด ์ด๋ฒ ๋ฌ๊น์ง ์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์ ๊ธฐ๋ก์ ๋ฐํ์ผ๋ก ๋ค์ ๋ฌ์ ๋๊ฐ ์ ๋ฌผ์ ๋ง์ด ๋ฐ์์ง ์์ธกํ๋ ค๊ณ ํฉ๋๋ค.
- ๋ ์ฌ๋์ด ์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์ ๊ธฐ๋ก์ด ์๋ค๋ฉด, ์ด๋ฒ ๋ฌ๊น์ง ๋ ์ฌ๋ ์ฌ์ด์ ๋ ๋ง์ ์ ๋ฌผ์ ์ค ์ฌ๋์ด ๋ค์ ๋ฌ์ ์ ๋ฌผ์ ํ๋ ๋ฐ์ต๋๋ค.
- ์๋ฅผ ๋ค์ด
A
๊ฐB
์๊ฒ ์ ๋ฌผ์ 5๋ฒ ์คฌ๊ณ ,B
๊ฐA
์๊ฒ ์ ๋ฌผ์ 3๋ฒ ์คฌ๋ค๋ฉด ๋ค์ ๋ฌ์A
๊ฐB
์๊ฒ ์ ๋ฌผ์ ํ๋ ๋ฐ์ต๋๋ค.
- ์๋ฅผ ๋ค์ด
- ๋ ์ฌ๋์ด ์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์ ๊ธฐ๋ก์ด ํ๋๋ ์๊ฑฐ๋ ์ฃผ๊ณ ๋ฐ์ ์๊ฐ ๊ฐ๋ค๋ฉด, ์ ๋ฌผ ์ง์๊ฐ ๋ ํฐ ์ฌ๋์ด ์ ๋ฌผ ์ง์๊ฐ ๋ ์์ ์ฌ๋์๊ฒ ์ ๋ฌผ์ ํ๋ ๋ฐ์ต๋๋ค.
- ์ ๋ฌผ ์ง์๋ ์ด๋ฒ ๋ฌ๊น์ง ์์ ์ด ์น๊ตฌ๋ค์๊ฒ ์ค ์ ๋ฌผ์ ์์์ ๋ฐ์ ์ ๋ฌผ์ ์๋ฅผ ๋บ ๊ฐ์ ๋๋ค.
- ์๋ฅผ ๋ค์ด
A
๊ฐ ์น๊ตฌ๋ค์๊ฒ ์ค ์ ๋ฌผ์ด 3๊ฐ๊ณ ๋ฐ์ ์ ๋ฌผ์ด 10๊ฐ๋ผ๋ฉดA
์ ์ ๋ฌผ ์ง์๋ -7์ ๋๋ค.B
๊ฐ ์น๊ตฌ๋ค์๊ฒ ์ค ์ ๋ฌผ์ด 3๊ฐ๊ณ ๋ฐ์ ์ ๋ฌผ์ด 2๊ฐ๋ผ๋ฉดB
์ ์ ๋ฌผ ์ง์๋ 1์ ๋๋ค. ๋ง์ฝA
์B
๊ฐ ์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์ ์ ์ด ์๊ฑฐ๋ ์ ํํ ๊ฐ์ ์๋ก ์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์๋ค๋ฉด, ๋ค์ ๋ฌ์B
๊ฐA
์๊ฒ ์ ๋ฌผ์ ํ๋ ๋ฐ์ต๋๋ค. - ๋ง์ฝ ๋ ์ฌ๋์ ์ ๋ฌผ ์ง์๋ ๊ฐ๋ค๋ฉด ๋ค์ ๋ฌ์ ์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์ง ์์ต๋๋ค.
์์์ ์ค๋ช ํ ๊ท์น๋๋ก ๋ค์ ๋ฌ์ ์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์ ๋, ๋น์ ์ ์ ๋ฌผ์ ๊ฐ์ฅ ๋ง์ด ๋ฐ์ ์น๊ตฌ๊ฐ ๋ฐ์ ์ ๋ฌผ์ ์๋ฅผ ์๊ณ ์ถ์ต๋๋ค.
์น๊ตฌ๋ค์ ์ด๋ฆ์ ๋ด์ 1์ฐจ์ ๋ฌธ์์ด ๋ฐฐ์ด friends
์ด๋ฒ ๋ฌ๊น์ง ์น๊ตฌ๋ค์ด ์ฃผ๊ณ ๋ฐ์ ์ ๋ฌผ ๊ธฐ๋ก์ ๋ด์ 1์ฐจ์ ๋ฌธ์์ด ๋ฐฐ์ด gifts
๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์ด๋, ๋ค์๋ฌ์ ๊ฐ์ฅ ๋ง์ ์ ๋ฌผ์ ๋ฐ๋ ์น๊ตฌ๊ฐ ๋ฐ์ ์ ๋ฌผ์ ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
๊ธฐ๋กํ๊ธฐ
๐ก ์ด๋๊น์ง ์๊ฐํด๋ดค๋์ง ๋จ๊ณ์ ์ผ๋ก ๊ธฐ๋กํด๋ด ๋๋ค.
์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉํ๋ ค ํ๋์?
2์ฐจ์ ๋ฐฐ์ด์ ์ด๋ค.
์ ์ฉ ๊ทผ๊ฑฐ๋ ๋ฌด์์ธ๊ฐ์?
์ ์ถ๋ ฅ ์์ ์ค๋ช ๊ทธ๋๋ก ๊ตฌํํ๋ ๊ฒ ์ ์ผ ๋ซ๋ค๊ณ ํ๋จํ๋ค.
ํ์ด
ํ์ด ์๊ฐ
์์ ์๊ฐ | ์ข ๋ฃ ์๊ฐ | ์ด ์์ ์๊ฐ |
---|---|---|
22:50 | 23:33 | 43๋ถ |
๋ฌธ์ ๋ถ์
์ ์ฝ ์ฌํญ ํ์ & ํ ์คํธ ์ผ์ด์ค ์์ฑ
- 2 ≤
friends
์ ๊ธธ์ด = ์น๊ตฌ๋ค์ ์ ≤ 50friends
์ ์์๋ ์น๊ตฌ์ ์ด๋ฆ์ ์๋ฏธํ๋ ์ํ๋ฒณ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ง ๊ธธ์ด๊ฐ 10 ์ดํ์ธ ๋ฌธ์์ด์ ๋๋ค.- ์ด๋ฆ์ด ๊ฐ์ ์น๊ตฌ๋ ์์ต๋๋ค.
- 1 ≤
gifts
์ ๊ธธ์ด ≤ 10,000gifts
์ ์์๋"A B"
ํํ์ ๋ฌธ์์ด์ ๋๋ค.A
๋ ์ ๋ฌผ์ ์ค ์น๊ตฌ์ ์ด๋ฆ์B
๋ ์ ๋ฌผ์ ๋ฐ์ ์น๊ตฌ์ ์ด๋ฆ์ ์๋ฏธํ๋ฉฐ ๊ณต๋ฐฑ ํ๋๋ก ๊ตฌ๋ถ๋ฉ๋๋ค.A
์B
๋friends
์ ์์์ด๋ฉฐA
์B
๊ฐ ๊ฐ์ ์ด๋ฆ์ธ ๊ฒฝ์ฐ๋ ์กด์ฌํ์ง ์์ต๋๋ค.
์ ๋ ฅ๊ฐ ๋ถ์
๐ก ์ ๋ ฅ๊ฐ์ ๋ถ์ํ๋ฉด ๋ฌธ์ ์์ ์๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ ์ ์ผ๋ก ํ์ ํ ์ ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
friends | gifts | result |
---|---|---|
["muzi", "ryan", "frodo", "neo"] | ["muzi frodo", "muzi frodo", "ryan muzi", "ryan muzi", "ryan muzi", "frodo muzi", "frodo ryan", "neo muzi"] | 2 |
["joy", "brad", "alessandro", "conan", "david"] | ["alessandro brad", "alessandro joy", "alessandro conan", "david alessandro", "alessandro david"] | 4 |
["a", "b", "c"] | ["a b", "b a", "c a", "a c", "a c", "c a"] | 0 |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
์ฃผ๊ณ ๋ฐ์ ์ ๋ฌผ๊ณผ ์ ๋ฌผ ์ง์๋ฅผ ํ๋ก ๋ํ๋ด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
↓์ค ์ฌ๋ \ ๋ฐ์ ์ฌ๋→ | muzi | ryan | frodo | neo |
---|---|---|---|---|
muzi | - | 0 | 2 | 0 |
ryan | 3 | - | 0 | 0 |
frodo | 1 | 1 | - | 0 |
neo | 1 | 0 | 0 | - |
์ด๋ฆ | ์ค ์ ๋ฌผ | ๋ฐ์ ์ ๋ฌผ | ์ ๋ฌผ ์ง์ |
---|---|---|---|
muzi | 2 | 5 | -3 |
ryan | 3 | 1 | 2 |
frodo | 2 | 2 | 0 |
neo | 1 | 0 | 1 |
muzi
๋ ์ ๋ฌผ์ ๋ ๋ง์ด ์คฌ๋ frodo
์๊ฒ์ ์ ๋ฌผ์ ํ๋ ๋ฐ์ต๋๋ค.ryan
์ ์ ๋ฌผ์ ๋ ๋ง์ด ์คฌ๋ muzi
์๊ฒ์ ์ ๋ฌผ์ ํ๋ ๋ฐ๊ณ , ์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์ง ์์๋ neo
๋ณด๋ค ์ ๋ฌผ ์ง์๊ฐ ์ปค ์ ๋ฌผ์ ํ๋ ๋ฐ์ต๋๋ค.frodo
๋ ์ ๋ฌผ์ ๋ ๋ง์ด ์คฌ๋ ryan
์๊ฒ ์ ๋ฌผ์ ํ๋ ๋ฐ์ต๋๋ค.neo
๋ ์ ๋ฌผ์ ๋ ๋ง์ด ์คฌ๋ muzi
์๊ฒ์ ์ ๋ฌผ์ ํ๋ ๋ฐ๊ณ , ์ ๋ฌผ์ ์ฃผ๊ณ ๋ฐ์ง ์์๋ frodo
๋ณด๋ค ์ ๋ฌผ ์ง์๊ฐ ์ปค ์ ๋ฌผ์ ํ๋ ๋ฐ์ต๋๋ค.
๋ค์๋ฌ์ ๊ฐ์ฅ ์ ๋ฌผ์ ๋ง์ด ๋ฐ๋ ์ฌ๋์ ryan
๊ณผ neo
์ด๊ณ 2๊ฐ์ ์ ๋ฌผ์ ๋ฐ์ต๋๋ค. ๋ฐ๋ผ์ 2๋ฅผ return ํด์ผ ํฉ๋๋ค.
์์ฌ ์ฝ๋ ์์ฑ
๐ก ์์ฌ ์ฝ๋๋ ๋์ ์ค์ฌ์ผ๋ก ์์ฑํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๐ก ์์ฌ ์ฝ๋๋ ๋ฌธ์ ํด๊ฒฐ ์์๋ก ์์ฑํฉ๋๋ค.
๐ก ์์ฌ ์ฝ๋๋ฅผ ์ถฉ๋ถํ ํ ์คํธํด๋ด ๋๋ค.
solution(String[] friends, String[] gifts) {
int n = friends.length;
// 1. ์ด๋ฆ - ์ธ๋ฑ์ค map ์์ฑ
HashMap<String, Integer> friendsMap;
for (int i; i < n i++) {
friendsMap.put(name, i);
}
// 2. ์ฃผ๊ณ ๋ฐ์ ์ ๋ฌผ ๊ฐ์ matrix ์์ฑ
int[][] giveTakes = new int[n][n];
// 3. ์ฌ๋ ๋ณ ์ค ์ ๋ฌผ ๋ฐ์ ํต๊ณ ํ ์์ฑ
int[][] giftStats = new int[n][2];
for (String gift : gifts) {
String[] giverTakers = split(" ");
int giver = friendsMap.get(giverTakers[0]);
int taker = friendsMap.get(giverTakers[1]);
giveTakes[giver][taker] += 1;
giftStats[giver][0] += 1;
giftStats[taker][1] += 1;
}
// 4. ๊ฒฐ๊ณผ ๋ฐฐ์ด ์์ฑ
int[] result = new int[n];
// matrix ๋ฐํ์ผ๋ก ๊ฒฐ๊ณผ ๋์ถ
for (int i) {
for (int j) {
if (i == i) continue;
// ์ ๋ฌผ์ ๋ ๋ง์ด ์ค ์น๊ตฌ ์ฐพ๊ธฐ
if (giveTakes[i][j] > giveTakes[j][i]) {
result[i] += 1;
} else if (giveTakes[i][j] == giveTakes[j][i]) {
// ์ง์ ๋์ ์น๊ตฌ ์ฐพ๊ธฐ
int iStat = giftStats[i][0] - giftStats[i][1];
int jStat = giftStats[j][0] - giftStats[j][1];
if (iStat > jStat) {
result[i] += 1;
}
}
}
}
return result์ max ๊ฐ;
}
๊ตฌํ
import java.util.HashMap;
import java.util.Arrays;
class Solution {
public int solution(String[] friends, String[] gifts) {
int n = friends.length;
// 1. ์ด๋ฆ - ์ธ๋ฑ์ค map ์์ฑ
HashMap<String, Integer> friendsMap = new HashMap<>();
for (int i = 0;i < n; i++) {
friendsMap.put(friends[i], i);
}
// 2. ์ฃผ๊ณ ๋ฐ์ ์ ๋ฌผ ๊ฐ์ matrix ์์ฑ
int[][] giveTakes = new int[n][n];
// 3. ์ฌ๋ ๋ณ ์ค ์ ๋ฌผ ๋ฐ์ ํต๊ณ ํ ์์ฑ
int[][] giftStats = new int[n][2];
for (String gift : gifts) {
String[] giverTakers = gift.split(" ");
int giver = friendsMap.get(giverTakers[0]);
int taker = friendsMap.get(giverTakers[1]);
giveTakes[giver][taker] += 1;
giftStats[giver][0] += 1;
giftStats[taker][1] += 1;
}
// 4. ๊ฒฐ๊ณผ ๋ฐฐ์ด ์์ฑ
int[] result = new int[n];
// matrix ๋ฐํ์ผ๋ก ๊ฒฐ๊ณผ ๋์ถ
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (i == j) continue;
// ์ ๋ฌผ์ ๋ ๋ง์ด ์ค ์น๊ตฌ ์ฐพ๊ธฐ
if (giveTakes[i][j] > giveTakes[j][i]) {
result[i] += 1;
} else if (giveTakes[i][j] == giveTakes[j][i]) {
// ์ง์ ๋์ ์น๊ตฌ ์ฐพ๊ธฐ
int iStat = giftStats[i][0] - giftStats[i][1];
int jStat = giftStats[j][0] - giftStats[j][1];
if (iStat > jStat) {
result[i] += 1;
}
}
}
}
return Arrays.stream(result).max().getAsInt();
}
}
๋ณต๊ธฐํ๊ธฐ
๋ต์๊ณผ ๋์ ํ์ด๋ฅผ ๋น๊ตํด๋ณด์ธ์
์ถ์ฒ์ ๊ฐ์ฅ ๋ง์ด ๋ฐ์๋ ํ์ด
import java.util.*;
class Solution {
public int solution(String[] friends, String[] gifts) {
Map<String, Integer> map = new HashMap<>();
for (int i = 0; i < friends.length; i++) {
map.put(friends[i], i);
}
int[] index = new int[friends.length];
int[][] record = new int[friends.length][friends.length];
for (String str : gifts) {
String[] cur = str.split(" ");
index[map.get(cur[0])]++;
index[map.get(cur[1])]--;
record[map.get(cur[0])][map.get(cur[1])]++;
}
int ans = 0;
for (int i = 0; i < friends.length; i++) {
int cnt = 0;
for (int j = 0; j < friends.length; j++) {
if(i == j) continue;
if (record[i][j] > record[j][i]) cnt++;
else if (record[i][j] == record[j][i] && index[i] > index[j]) cnt++;
}
ans = Math.max(cnt, ans);
}
return ans;
}
}
- ๋๋ ๊ฑฐ์ ๋น์ทํ๊ฒ ํผ ๊ฒ ๊ฐ๋ค.
'Algorithm > ํ ์ฝํ ์ฝ1.5(2025.01)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ ์ฝํ ์ฝ1.5 1-12] ๋ฐ์ดํฐ ๋ถ์ (0) | 2025.01.14 |
---|---|
[ํ ์ฝํ ์ฝ1.5 1-11] ์ด์ํ ์นธ (0) | 2025.01.14 |
[ํ ์ฝํ ์ฝ1.5 1-09] ๋ถ๋ ๊ฐ๊ธฐ (0) | 2025.01.14 |
[ํ ์ฝํ ์ฝ1.5 1-08] ๊ณต์ (0) | 2025.01.14 |
[ํ ์ฝํ ์ฝ1.5 1-07] ์งํ ์ ๊ธฐ (0) | 2025.01.12 |