ํฐ์คํ ๋ฆฌ ๋ทฐ
Algorithm/Programmers
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ํคํจ๋ ๋๋ฅด๊ธฐ
๊ฐ๋ฐ๊ฐ๊ตด๐ธ 2022. 7. 3. 19:16[๋ฌธ์ ]
https://programmers.co.kr/learn/courses/30/lessons/67256
[ํ์ด]
์ฐ์ ํ์ํ ์ ๋ณด๋ค์ ์ธํ ํฉ๋๋ค.
- (x,y)์ขํ๋ฅผ ์ ์ฅํ ์ ์๋ KeyPadํด๋์ค๋ฅผ ์์ฑํฉ๋๋ค.
- Map<Integer, KeyPad> map์ ํคํจ๋์ ๋ชจ์๋๋ก ์ซ์๋ค์ ์์น (x,y)๋ฅผ ์ ์ฅํฉ๋๋ค.
- KeyPad right, keyPad right์ ๊ฐ๊ฐ ์์ ์์น ์ขํ๋ฅผ์ ์ฅํฉ๋๋ค.
๋ค์์ผ๋ก, numbers[]์ ํ์ํ๋ฉด์
- 1,4,7 ์ซ์๋ ์ผ์์ด ํด๋ฆญํ๋ฏ๋ก "L"์ ์ ์ฅํ๊ณ ํด๋น ์ซ์์ ์ขํ์ ์์น๋ก left๋ฅผ ๊ฐฑ์ ํฉ๋๋ค.
- 3,6,9 ์ซ์๋ ์ค๋ฅธ์์ด ํด๋ฆญํ๋ฏ๋ก "R"์ ์ ์ฅํ๊ณ ํด๋น ์ซ์์ ์ขํ์ ์์น๋ก right๋ฅผ ๊ฐฑ์ ํฉ๋๋ค.
- ๋๋จธ์ง ์ซ์๋ค์ ๋ํด์๋, click()์ ํตํด ํด๋น ์ซ์์ ๊ฐ ์์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํํ, ๊ฐ๊น์ด ์์ผ๋ก ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค. ์ด๋ ๋ง์ฝ, ๋์์ ๊ฑฐ๋ฆฌ๊ฐ ๊ฐ๋ค๋ฉด, hand์ ์ ์ฅ๋ ์์ผ๋ก ํด๋น ์ซ์๋ฅผ ๋๋ฅด๊ณ hand๋ฅผ ํด๋น ์ขํ๋ก ์ด๋์ํต๋๋ค.
[์ฝ๋]
import java.util.*;
class KeyPad{
int x;
int y;
KeyPad(int x, int y) {
this.x = x;
this.y = y;
}
}
class Solution {
static Map<Integer, KeyPad> map = new HashMap<Integer, KeyPad>(); // ์ซ์ ๋ค์ด์๋ ์์น ์ ์ฅ
static KeyPad left = new KeyPad(3,0); // ์ผ์ ์์น
static KeyPad right = new KeyPad(3,2); // ์ค๋ฅธ์ ์์น
public String solution(int[] numbers, String hand) {
String answer = "";
map.put(0, new KeyPad(3,1));
int index = 1;
for(int i=0;i<3;i++) {
for(int j=0;j<3;j++) {
map.put(index, new KeyPad(i,j));
index++;
}
}
for(int i=0;i<numbers.length;i++) {
// ์ผ์ชฝ์ด ๋๋ฆ
if(numbers[i] == 1 || numbers[i] == 4 || numbers[i] == 7) {
answer += "L";
left = map.get(numbers[i]);
}
// ์ค๋ฅธ์ชฝ์ด ๋๋ฆ
else if(numbers[i] == 3 || numbers[i] == 6 || numbers[i] == 9) {
answer += "R";
right = map.get(numbers[i]);
}
// ๊ฐ๊น์ด ์๊ฐ๋ฝ์ด ๋๋ฆ
else {
answer += click(numbers[i], hand);
}
}
return answer;
}
public static String click(int number, String hand) {
KeyPad kp = map.get(number);
int l = Math.abs(kp.x - left.x) + Math.abs(kp.y - left.y);
int r = Math.abs(kp.x - right.x) + Math.abs(kp.y - right.y);
if(l < r) {
//์ผ์์ด ๊ฐ๊น์
left = kp;
return "L";
} else if(l > r) {
//์ค๋ฅธ์์ด ๊ฐ๊น์
right = kp;
return "R";
} else {
if(hand.equals("left")) {
left = kp;
return "L";
} else {
right = kp;
return "R";
}
}
}
}
'Algorithm > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ๋ณด์ ์ผํ (0) | 2022.07.03 |
---|---|
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ์์ ์ต๋ํ (0) | 2022.07.03 |
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ์ถ์ ํธ๋ํฝ (0) | 2022.06.13 |
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ์๋ฌผ์ ์ ์ด์ (0) | 2022.06.13 |
[Java] ํ๋ก๊ทธ๋๋จธ์ค - ๋ก๋์ ์ต๊ณ ์์์ ์ต์ ์์ (0) | 2022.06.05 |
๊ณต์ง์ฌํญ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ
- Total
- Today
- Yesterday
๋งํฌ
TAG
- http
- ํ๋กํ ์ฝ
- ์๋ฐ
- ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ deep dive
- JavaScript
- ์ ์ญ ๋ณ์
- ์๋ฐ์คํฌ๋ฆฝํธ
- fp
- ์ด์์ฒด์
- ์ฝ๋ฉํ ์คํธ
- ๋ฐฑ์ค node.js
- ์๊ณ ๋ฆฌ์ฆ
- ํ๋กํผํฐ
- ๋ฐฑ์ค
- ๋์์ธ ํจํด
- ๋ฐฑ์ค javascript
- ์ด๋ถํ์
- ๋ ์์ปฌ ํ๊ฒฝ
- TDD
- ํจ์ํ ํ๋ก๊ทธ๋๋ฐ
- ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
- ๋คํธ์ํฌ
- ํ๋ก๊ทธ๋๋จธ์ค
- Baekjoon
- ํฌํฌ์ธํฐ
- map
- git
- ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ
- 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด
- ์นด์นด์ค ์ธํด
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
๊ธ ๋ณด๊ดํจ