본문 바로가기
코딩테스트/프로그래머스 0단계 - 기초 트레이닝

프로그래머스 0단계 - 공배수, 더 크게 만들기

by 학습하는 청년 2024. 3. 29.

공배수

정수 number와 n, m이 주어집니다. number가 n의 배수이면서 m의 배수이면 1을 아니면 0을 return하도록 solution 함수를 완성해주세요.

  • 10 ≤ number ≤ 100
  • 2 ≤ n, m < 10
function solution(number, n, m) {
  if(number % n === 0) {
    if(number % m === 0) return 1;
  }
  return 0;
}

배수이므로 나누면 몫만 떨어지면 된다. 따라서 %연산자를 사용하였다.

n의 배수이면서 m의 배수라는 조건이 있으므로 if문을 두 번 사용했다.


더 크게 합치기

연산 ⊕는 두 정수에 대한 연산으로 두 정수를 붙여서 쓴 값을 반환합니다. 예를 들면 다음과 같습니다.

  • 12 ⊕ 3 = 123
  • 3 ⊕ 12 = 312

양의 정수 a와 b가 주어졌을 때, a ⊕ b와 b ⊕ a 중 더 큰 값을 return 하는 solution 함수를 완성해 주세요.
단, a ⊕ b와 b ⊕ a가 같다면 a ⊕ b를 return 합니다.

  • 1 ≤ a, b < 10,000
function solution(a, b) {
  let num1 = Number(String(a) + String(b));
  let num2 = Number(String(b) + String(a));
  
  return num1 >= num2 ? num1 : num2;
}

// 다른 사람의 풀이
function solution(a, b) {
  return Math.max(Number(`${a}${b}`), Number(`${b}${a}`))
}

a와 b가 양의 정수이니까, 'a' + 'b'하면 'ab'가 되고 Number('ab')이면 숫자 ab가 되니까

Number('a' + 'b')로 풀었는데 안 됐다. 왜지??? 아직 모르겠다.

 

그래서 일단 a와 b를 각각 문자열로 바꿔주고, 전체에 Number()를 사용했다.

--> 이유를 알게 됐다!! 'a', 'b' 저렇게 만들면, 문자로 바꾼 게 아니라 문자 a와 b를 더한 것 밖에 안 되는 꼴이었다!. 매개변수에 a,b가 있다고 좋다고 덤볐다가 20분을 할애하게 됐다.

 

<다른 사람의 풀이에 대한 이해>

Math.max(a, b)는 둘 중 더 큰 값을 리턴해준다. 따라서 조건식을 세울 필요가 없다. 두 값이 같은 경우에는 같은 값을 출력

 

댓글