728x90
# 문제
사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분입니다. 사분면은 아래와 같이 1부터 4까지 번호를매깁니다.
# 답안
// 1. 입력: dot -> 정수 배열 [1,2] [-1,-2] 같은거
// 2. 출력: 1,2,3,4 중에 하나 반환
// 3. 요구사항: 사분면에 따라서 1,2,3,4 반환하게 하기
// 방법1) if-else 구문 사용
function solution(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 (dot[0] > 0 && dot[1] < 0){
return 4
}
}
// 방법2) 조금 더 축약 버전
function solution(dot) {
let answer = 0;
if (dot[0] > 0 && dot[1] > 0) answer = 1;
if (dot[0] < 0 && dot[1] > 0) answer = 2;
if (dot[0] < 0 && dot[1] < 0) answer = 3;
if (dot[0] > 0 && dot[1] < 0) answer = 4;
return answer;
}
// 방법3) 삼항 연산자 사용 -> 가장 나은 방법
function solution(dot) {
return dot[0] > 0 ? dot[1] > 0 ? 1 : 4 : dot[1] > 0 ? 2 : 3;
}
# 인사이트
// 3번 방법이 (가독성, 효율성, 간결성 측면에서) 제일 나은 코드이다.
// 1) 가독성: 한줄의 코드, 삼항연산자를 통해 사분면을 결정하는 로직을 명확하게 표현
// 2) 효율성: 단일한 반환문을 사용해서 함수의 실행흐름이 간결함 비교적 작은 연산자들을 사용하여 사분면을 결정하므로 효율적
// 3) 간결성: 코드가 간결하고 짧다. 불필요한 if-else 블록이나 변수 선언 없이도 필요한 사분면을 결정할 수 있음
function solution(dot) {
return dot[0] > 0 ? dot[1] > 0 ? 1 : 4 : dot[1] > 0 ? 2 : 3 ;
}
< 3번 방법 해석 >
* dot[0]은 x좌표, dot[0]은 y좌표를 나타냄
1. dot[0] > 0 가 true인 경우 (x좌표가 양수인 경우)
→ dot[1] > 0 가 true면 (y좌표가 양수) ▶ 1사분면
→ dot[1] > 0 가 false면 (y좌표가 음수) ▶ 4사분면
2. dot[0] > 0 가 false인 경우 (x좌표가 양수인 경우)
→ dot[1] > 0 가 true면 (y좌표가 양수) ▶ 2사분면
→ dot[1] > 0 가 false면 (y좌표가 음수) ▶ 3사분면
728x90
'Coding Test > Programmers' 카테고리의 다른 글
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 20 - 최댓값 만들기 (1)) (0) | 2024.01.31 |
---|---|
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 19 - 배열 자르기) (0) | 2024.01.31 |
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 17 - 편지) (0) | 2024.01.30 |
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 16 - 피자 나눠먹기(3)) (0) | 2024.01.30 |
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 15 - 피자 나눠먹기(1)) (0) | 2024.01.30 |