๋ฌธ์ ์ ๊ทผ
https://school.programmers.co.kr/learn/courses/30/lessons/67256
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก์ Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
๋ฌธ์ ๋ฅผ ์ฝ์ด๋ณด๋ฉด ๋ฐ๋ก ๊ตฌํ๊ณผ ๊ด๋ จ๋ ๋ฌธ์ ์์ ์ ์ ์๋ค
=> ์ค์๋ฅผ ์๋ฐฉํ๊ธฐ ์ํด ์ด๋ป๊ฒ ๋ชจ๋ํ๋ฅผ ํด์ผ ๋ ๊น๋ํ๊ฒ ํ ์ ์์๊น์ ์ค์ ์ ๋๊ณ ์ ๊ทผํ์
๋ฌธ์ ํ์ด
1. ์์ง์๊ฐ๋ฝ์ ์ํ์ข์ฐ 4๊ฐ์ง ๋ฐฉํฅ์ผ๋ก๋ง ์ด๋ํ ์ ์์ผ๋ฉฐ ํคํจ๋ ์ด๋ ํ ์นธ์ ๊ฑฐ๋ฆฌ๋ก 1์ ํด๋นํฉ๋๋ค.
=> ๋ฐฉํฅ ๋ฒกํฐ๋ฅผ ์ฌ์ฉํ๋์ค ์ฐฉ๊ฐํ ๋ปํ์ง๋ง ๊ฒฐ๊ตญ 4๋ฒ ๊ท์น์์ ๊ฑฐ๋ฆฌ๋ฅผ ๋น๊ตํ ๋ ๊ทธ๋ฅ ๊ณตํํ๊ฒ ํ์นธ์ฉ ์ด๋ํ๋ค๋ ์๋ฏธ๋ก ์ดํดํ๋ฉด๋จ
2. ์ผ์ชฝ ์ด์ 3๊ฐ์ ์ซ์ 1, 4, 7์ ์ ๋ ฅํ ๋๋ ์ผ์ ์์ง์๊ฐ๋ฝ์ ์ฌ์ฉํฉ๋๋ค.
3. ์ค๋ฅธ์ชฝ ์ด์ 3๊ฐ์ ์ซ์ 3, 6, 9๋ฅผ ์
๋ ฅํ ๋๋ ์ค๋ฅธ์ ์์ง์๊ฐ๋ฝ์ ์ฌ์ฉํฉ๋๋ค.
=> ๊ฐ๊ฐ ํด๋น ์ซ์์ ๋ง์ถฐ์ ์ผ์, ์ค๋ฅธ์ ์ค ์ด๋ค๊ฑธ ์ฌ์ฉํ ์ง StringBuilder์ ๋ฃ์ด์ฃผ๊ณ ํ์ฌ ํด๋น ์๊ฐ๋ฝ ์์น๋ฅผ ์ ์ฅ
4. ๊ฐ์ด๋ฐ ์ด์ 4๊ฐ์ ์ซ์ 2, 5, 8, 0์ ์
๋ ฅํ ๋๋ ๋ ์์ง์๊ฐ๋ฝ์ ํ์ฌ ํคํจ๋์ ์์น์์ ๋ ๊ฐ๊น์ด ์์ง์๊ฐ๋ฝ์ ์ฌ์ฉํฉ๋๋ค.
(๋ง์ฝ ๋ ์์ง์๊ฐ๋ฝ์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ๋ค๋ฉด, ์ค๋ฅธ์์ก์ด๋ ์ค๋ฅธ์ ์์ง์๊ฐ๋ฝ, ์ผ์์ก์ด๋ ์ผ์ ์์ง์๊ฐ๋ฝ์ ์ฌ์ฉํฉ๋๋ค.)
=> 3๋ฒ์์ ์ ์ฅํด๋ ์ผ์, ์ค๋ฅธ์์ ํ์ฌ ์์น๋ฅผ ๋ฐํ์ผ๋ก 2, 5, 8, 0 ์ซ์๊ฐ ๋์ค๋ฉด ๊ฐ ์์ผ๋ก๋ถํฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ์ธก์ ํด์ ์กฐ๊ฑด์ ๋ง๊ฒ ํด๋ฆญํ๊ณ ๋๊ฐ์ด ํด๋ฆญํ ์๊ฐ๋ฝ์ ์์น๋ฅผ ๊ฐฑ์ ํด์ค
์ ์ฒด ์ฝ๋
import java.util.*;
class Solution {
// ํ์ฌ ์ผ์, ์ค๋ฅธ์์ ํคํจ๋ ์์น
int[] lPos = new int[] {0, 3};
int[] rPos = new int[] {2, 3};
String click(String hand, int number, int numberX, int numberY) {
// ์ค๋ฅธ์์ผ๋ก ํด๋ฆญํ๋์ง ์ฌ๋ถ
boolean isRight = false;
// ์ค๋ฅธ์, ์ผ์์ ํ์ฌ ์์น๋ก๋ถํฐ ํด๋น ํคํจ๋๋ฅผ ๋๋ฅด๋ ค๋ฉด ์ผ๋ง๋ ์ด๋ํด์ผํ๋์ง ๊ณ์ฐ
int gapRight = Math.abs((numberX - rPos[0])) + Math.abs((numberY - rPos[1]));
int gapLeft = Math.abs((numberX - lPos[0])) + Math.abs((numberY - lPos[1]));
// ๋จ์ด์ง ์์น๊ฐ ๋์ผํ๋ฉด
if(gapRight == gapLeft) {
// ์ค๋ฅธ์์ก์ด์ธ์ง๋ฅผ ํ์ธ
if(hand.equals("right")) {
isRight = true;
}
} else if(gapRight < gapLeft) { // ์ค๋ฅธ์ชฝ ์์ด ๋ ๊ฐ๊น์ด ์์ผ๋ฉด ์ค๋ฅธ์์ผ๋ก ํด๋ฆญ
isRight = true;
}
// ์ค๋ฅธ์ชฝ ์์ผ๋ก ๋๋ฌ์ผํ๋ฉด
if(isRight) {
rPos[0] = numberX;
rPos[1] = numberY;
return "R";
} else { // ์ผ์์ผ๋ก ๋๋ฌ์ผํ๋ฉด
lPos[0] = numberX;
lPos[1] = numberY;
return "L";
}
}
public String solution(int[] numbers, String hand) {
StringBuilder sb = new StringBuilder();
for(int number : numbers) {
// ํ์ฌ number์ x, y๊ฐ ๊ณ์ฐ์ ์ํ ๋ณ์ ์ ์ธ
int numberX;
int numberY;
// ๋ง์ฝ ํคํจ๋๊ฐ ์ซ์ 0์ด๋ฉด x, y ์์น๋ฅผ ์ธํ
ํด์ค
if(number == 0) {
numberX = 1;
numberY = 3;
} else { // 1~9 ๊น์ง์ ์ซ์๋ ๊ณต์์ ์ด์ฉํด์ ์์น ๊ณ์ฐ
numberX = (number + 2) % 3;
numberY = (number - 1) / 3;
}
// ์ผ์์ผ๋ก ํด๋ฆญ
if(number == 1 || number == 4 || number == 7) {
sb.append("L");
lPos[0] = numberX;
lPos[1] = numberY;
} else if(number == 3 || number == 6 || number == 9) { // ์ค๋ฅธ์์ผ๋ก ํด๋ฆญ
sb.append("R");
rPos[0] = numberX;
rPos[1] = numberY;
} else { // 2, 5, 8, 0์ ์ค๋ฅธ์, ์ผ์ ์์น๋ฅผ ๋น๊ตํด์ ์ด๋ค๊ฑธ๋ก ํด๋ฆญํ ์ง ๊ฒฐ์
sb.append(click(hand, number, numberX, numberY));
}
}
return sb.toString(); // StringBuilder์ ๋ด๊ธด ํด๋ฆญ ์์๋ฅผ String์ผ๋ก ๋ณํ ํ ๋ฐํ
}
}'๐ฅ Algorithm > ๊ตฌํ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค] ์ค์ต์ฉ ๋ก๋ด (JAVA ํ์ด) (0) | 2025.11.02 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค] ์ธํจ์ด ์ํ๋ฒณ (JAVA ํ์ด) (0) | 2025.10.29 |
| [ํ๋ก๊ทธ๋๋จธ์ค] k์ง์์์ ์์ ๊ฐ์ ๊ตฌํ๊ธฐ (JAVA ํ์ด) (0) | 2025.10.25 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ (JAVA ํ์ด) (0) | 2025.10.24 |
| [ํ๋ก๊ทธ๋๋จธ์ค] ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ (JAVA ํ์ด) (0) | 2025.10.16 |