
Problem ๐ป
https://school.programmers.co.kr/learn/courses/30/lessons/120841
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
์ฌ๋ถ๋ฉด์ ํ ํ๋ฉด์ x์ถ๊ณผ y์ถ์ ๊ธฐ์ค์ผ๋ก ๋๋ ๋ค ๋ถ๋ถ์ ๋๋ค. ์ฌ๋ถ๋ฉด์ ์๋์ ๊ฐ์ด 1๋ถํฐ 4๊น์ง ๋ฒํธ๋ฅผ๋งค๊น๋๋ค.

- x ์ขํ์ y ์ขํ๊ฐ ๋ชจ๋ ์์์ด๋ฉด ์ 1์ฌ๋ถ๋ฉด์ ์ํฉ๋๋ค.
- x ์ขํ๊ฐ ์์, y ์ขํ๊ฐ ์์์ด๋ฉด ์ 2์ฌ๋ถ๋ฉด์ ์ํฉ๋๋ค.
- x ์ขํ์ y ์ขํ๊ฐ ๋ชจ๋ ์์์ด๋ฉด ์ 3์ฌ๋ถ๋ฉด์ ์ํฉ๋๋ค.
- x ์ขํ๊ฐ ์์, y ์ขํ๊ฐ ์์์ด๋ฉด ์ 4์ฌ๋ถ๋ฉด์ ์ํฉ๋๋ค.
x ์ขํ (x, y)๋ฅผ ์ฐจ๋ก๋๋ก ๋ด์ ์ ์ ๋ฐฐ์ด dot์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์ขํ dot์ด ์ฌ๋ถ๋ฉด ์ค ์ด๋์ ์ํ๋์ง 1, 2, 3, 4 ์ค ํ๋๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
Approach 1 โ - ๋์ ์๋ชป๋ ์ฝ๋
class Solution {
public int solution(int[] dot) {
if (dot[0] >0 && dot[1]> 0) {
return 1;
} else if (dot[0]<0 && dot[1]>0) {
return 2;
} else if (dot[0] <0 && dot[1] <0) {
return 3;
} else if (dot[0]>0 && dot[1] <0){
return 4;
}
}
}
์ฝ๋์ ๋ฌธ์ ๋ throw new IllegalArgumentException(...) ๊ฐ์ ๊ธฐ๋ณธ ์ฒ๋ฆฌ๋ ์์ธ ์ํฉ์ ์ฒ๋ฆฌํ์ง ์์์ ๋ฐ์ํ ๊ฒ์ด๋ค.
int x = dot[0]; int y = dot[1];์ ์ฌ๋ถ๋ ๋ฌธ์ ์ ํต์ฌ์ด ์๋๋ค.
• ํ์ฌ ์ฝ๋์์๋ ๋ค ๊ฐ์ง if-else ๋ธ๋ก๋ง ์๊ณ , ์ด๋ค ๊ฒฝ์ฐ๋ ๋ง์กฑํ์ง ์๋ ์ ๋ ฅ๊ฐ์ ๋ํด return๋ฌธ์ด ์๊ธฐ ๋๋ฌธ์ ์ปดํ์ผ๋ฌ๊ฐ ์ด๋ฅผ ์ค๋ฅ๋ก ๊ฐ์ฃผํ ๊ฒ์ด๋ค.์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ ์ด์ ๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ๋ฐํ๊ฐ์ด ๋ณด์ฅ๋์ง ์๋ ๊ตฌ์กฐ ๋๋ฌธ์ด๋ค.
์๋ฐ๋ ์ปดํ์ผ๋ฌ๊ฐ “์ด๋ค ๊ฒฝ์ฐ์๋ ๋ฐ๋์ int๋ฅผ ๋ฐํํ๋ค”๋ ๊ฑธ ๋ณด์ฅํ๋๋ก ์๊ตฌํ๋ค.
public int solution(int[] dot) {
if (dot[0] > 0 && dot[1] > 0) {
return 1; // ์ 1์ฌ๋ถ๋ฉด
} else if (dot[0] < 0 && dot[1] > 0) {
return 2; // ์ 2์ฌ๋ถ๋ฉด
} else if (dot[0] < 0 && dot[1] < 0) {
return 3; // ์ 3์ฌ๋ถ๋ฉด
} else if (dot[0] > 0 && dot[1] < 0) {
return 4; // ์ 4์ฌ๋ถ๋ฉด
}
// ์ฌ๊ธฐ์ return์ด ์๋ ์ํ๋ก ๋๋จ
}
์ ์ฝ๋์์๋ ์ด๋ค ๊ฒฝ์ฐ์๋ ๋ฐ๋์ ๋ฐํํ๋ค๋ ๊ฒ ๋ณด์ฅ๋์ง ์์ผ๋ฏ๋ก ์ปดํ์ผ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
Approach 2 โญ
๋ฐฉ๋ฒ 1: else๋ฅผ ์ถ๊ฐํด ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌ
class Solution {
public int solution(int[] dot) {
if (dot[0] > 0 && dot[1] > 0) {
return 1; // ์ 1์ฌ๋ถ๋ฉด
} else if (dot[0] < 0 && dot[1] > 0) {
return 2; // ์ 2์ฌ๋ถ๋ฉด
} else if (dot[0] < 0 && dot[1] < 0) {
return 3; // ์ 3์ฌ๋ถ๋ฉด
} else {
return 4; // ์ 4์ฌ๋ถ๋ฉด (else๋ก ์ฒ๋ฆฌ)
}
}
}
๋ฐฉ๋ฒ 2: ์์ธ๋ฅผ ๋์ ธ ๋น์ ์ ์ ๋ ฅ ์ฒ๋ฆฌ
class Solution {
public int solution(int[] dot) {
if (dot[0] > 0 && dot[1] > 0) {
return 1;
} else if (dot[0] < 0 && dot[1] > 0) {
return 2;
} else if (dot[0] < 0 && dot[1] < 0) {
return 3;
} else if (dot[0] > 0 && dot[1] < 0) {
return 4;
}
// ๋ชจ๋ ์ ์์ ์ธ ๊ฒฝ์ฐ๋ฅผ ์ฒ๋ฆฌํ์ผ๋ฏ๋ก, ์ฌ๊ธฐ๊น์ง ์ค๋ฉด ๋น์ ์์ ์ธ ์
๋ ฅ
throw new IllegalArgumentException("Invalid coordinates: " + dot[0] + ", " + dot[1]);
}
}
Solution ๐ก
class Solution {
public int solution(int[] dot) {
int x = dot[0];
int y = dot[1];
if (x > 0 && y > 0) {
return 1; // ์ 1์ฌ๋ถ๋ฉด
} else if (x < 0 && y > 0) {
return 2; // ์ 2์ฌ๋ถ๋ฉด
} else if (x < 0 && y < 0) {
return 3; // ์ 3์ฌ๋ถ๋ฉด
} else if (x > 0 && y < 0) {
return 4; // ์ 4์ฌ๋ถ๋ฉด
}
// ์ถ๊ฐ: ์์์น ๋ชปํ ์
๋ ฅ๊ฐ์ ๋ํ ๊ธฐ๋ณธ ์ฒ๋ฆฌ
throw new IllegalArgumentException("Invalid coordinates: " + x + ", " + y);
}
}
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ ผ๋ฆฌ์ ์ฌ๊ณ ์ฒด๊ณ
1. ๋ฌธ์ ์ดํด:
• 2์ฐจ์ ์ขํ๊ณ์์ (x, y)์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ด๋ ์ฌ๋ถ๋ฉด์ ์ํ๋์ง ํ๋ณํ๋ ๋ฌธ์ .
• ์ 1์ฌ๋ถ๋ฉด: x > 0, y > 0
• ์ 2์ฌ๋ถ๋ฉด: x < 0, y > 0
• ์ 3์ฌ๋ถ๋ฉด: x < 0, y < 0
• ์ 4์ฌ๋ถ๋ฉด: x > 0, y < 0
2. ์กฐ๊ฑด ๋์ด:
• x์ y ๊ฐ์ ๋ถํธ์ ๋ฐ๋ผ ๋ค ๊ฐ์ง ๊ฒฝ์ฐ๋ฅผ ์กฐ๊ฑด๋ฌธ์ผ๋ก ๋๋ ์ ์๋ค.
• ๊ฐ๋ฅํ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ 4๊ฐ์ง์ด๋ฉฐ, ๊ฐ ์กฐ๊ฑด์ ์ํธ ๋ฐฐํ์ (์ค๋ณต๋์ง ์์).
3. ์์ ํ ๋ฐํ๊ฐ ์ฒ๋ฆฌ:
• ๋ชจ๋ ์กฐ๊ฑด์ ๋ํด ์ ํํ ํ๋์ ๊ฐ์ ๋ฐํํ๋๋ก ์์ฑํด์ผ ํ๋ค.
• ๋ ผ๋ฆฌ์ ์ผ๋ก ๋ค ๊ฐ์ง ๊ฒฝ์ฐ ์ธ์๋ ์ ๋ ฅ์ด ์กด์ฌํ์ง ์์ผ๋ฏ๋ก else๋ฅผ ํตํด ๊ธฐ๋ณธ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ฑฐ๋ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํ๋ ์ถ๊ฐ ๋ก์ง์ ํฌํจํด์ผ ํ๋ค. else๋ ์กฐ๊ฑด๋ฌธ์ ๋ฃ์ผ๋ฉด ์๋๋ค.
4. ๊ฐ๋ ์ฑ ๋ฐ ํ์ฅ์ฑ:
• ๋ช ํํ๊ฒ ์กฐ๊ฑด์ ๋ถ๋ฆฌํ๊ณ , ํ์์ ๋ฐ๋ผ ์ฃผ์์ ์์ฑํด ์๋๋ฅผ ๋๋ฌ๋๋ค.
• ์์ธ ์ฒ๋ฆฌ์ ๋ํดํธ ๋ฐํ๊ฐ์ ์ถ๊ฐํด ์๊ธฐ์น ์์ ์ ๋ ฅ์๋ ๊ฒฌ๊ณ ํ๊ฒ ๋์ํ๋๋ก ๋ณด์ฅํ๋ค.