[프로그래머스-기초] 조건 문자열

JE·2023년 5월 22일
0

코테/코플릿

목록 보기
16/57

조건 문자열

문제 설명

문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다.

두 수가 n과 m이라면
">", "=" : n >= m
"<", "=" : n <= m
">", "!" : n > m
"<", "!" : n < m
두 문자열 ineq와 eq가 주어집니다. ineq는 "<"와 ">"중 하나고, eq는 "="와 "!"중 하나입니다. 그리고 두 정수 n과 m이 주어질 때, n과 m이 ineq와 eq의 조건에 맞으면 1을 아니면 0을 return하도록 solution 함수를 완성해주세요.

제한 사항

1 ≤ n, m ≤ 100

입출력 예

ineqeqnmresult
"<""="20501
">""!"41780

입출력 예 설명

입출력 예 #1
20 <= 50은 참이기 때문에 1을 return합니다.
입출력 예 #2
41 > 78은 거짓이기 때문에 0을 return합니다.

내가 작성한 코드

function solution(ineq, eq, n, m) {
    if(ineq === ">"){
        if(eq === "="){
           return n >= m ? 1 : 0
        }else{
           return n > m ? 1 : 0
        }
        
    }else if(ineq === "<"){
        if(eq === "="){
           return n <= m ? 1 : 0
        }else{
           return n < m ? 1 : 0
        }
    }
}

초반에 템플릿 리터럴을 사용해 Number()를 사용하면 되는거 아냐?하면서 작업했다가 null이 나왔고 연산 기호는 숫자가 될 수 없다는 걸 깨달았다. 왜 되는줄 알았지...

조건문을 이용해 해당 문자열이 맞으면 삼항연산자를 이용해 값을 반환하는 형식으로 했다.

다른 사람이 작성한 코드

const operations = {
  '>=': (n, m) => n >= m,
  '<=': (n, m) => n <= m,
  '>!': (n, m) => n > m,
  '<!': (n, m) => n < m,
};

function solution(ineq, eq, n, m) {
  const op = operations[ineq + eq];
  return Number(op(n, m));
}

operations라는 객체를 만들어 사용하신거 같다.

function solution(ineq, eq, n, m) {
    if (eq === '=' && n === m) return 1
    if (ineq === '<' && n < m) return 1
    if (ineq === '>' && n > m) return 1
    return 0
}

조건문이 깔끔해서 가지고 왔다.
왜 이런생각을 못했지 싶다...


📍 마치며

확실히 코딩 테스트는 수학적인 부분이 많아서
처음 접하면 나 처럼 수포자는 조금 어려운 부분이 있고
생각이 막히는 거 같다...

이렇게 조금식 열어두어야겠다.

profile
[프론트 애송이] 작은 깨달음도 기록하기

2개의 댓글

comment-user-thumbnail
2023년 10월 12일

어떻게 풀면 좋을지 감이 안 와서 찾아보다가 들어오게 됐는데 푸는 과정 속에 본인의 생각이나 그리고 마치면서 알게 된 점이나 회고하는 과정들이 좋은 것 같아서 하나 배운 것 같아 댓글 남기고 갑니다 !!

1개의 답글