[알고리즘 풀이_Lv0] 몫 구하기, 숫자 비교하기, 나이 출력, 각도기
*제주코딩베이스캠프의 JavaScript 알고리즘 100일 챌린지를 참고로 정리하고 있습니다.*
몫 구하기
문제
https://school.programmers.co.kr/learn/courses/30/lessons/120805
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
정수 num1, num2가 매개변수로 주어질 때, num1을 num2로 나눈 몫을 return 하도록 solution 함수를 완성해주세요.
해결 방안
단순하게 이렇게만 하면 실수로 출력이 된다.
num1 / num2
7 / 2 = 3.5 이런 식으로 요.
물론 아래와 같은 방법도 있지만
Math.floor(num1 / num2)
비트 NOT 연산자(~ 연산자)를 사용할 수 있습니다.
비트 NOT연산자
0은 1로 1은 0으로 바꾸며 "비트를 뒤집는다" 또는 "비트 반전"이라고 말합니다.
- 5 → 1001
- ~5 → 비트 0110
뒤집는다.
결론적으로 ~n = -(n+1)
~5 // -6
~~5 // 5
~~5.1 // 5
~~5.6 // 5
그래서 비트 NOT연산자를 사용해서 아래와 같이 구할 수 있다.
var answer = ~~(num1 / num2);
소스코드
function solution(num1, num2) {
var answer = ~~(num1 / num2);
return answer;
}
숫자 비교하기
문제
https://school.programmers.co.kr/learn/courses/30/lessons/120807
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
정수 num1과 num2가 매개변수로 주어집니다. 두 수가 같으면 1 다르면 -1을 retrun하도록 solution 함수를 완성해주세요.
소스코드
function solution(num1, num2) {
return num1 === num2 ? 1 : -1;
}
https://www.youtube.com/watch?v=RMmOU2u-_as&list=PLkfUwwo13dlWZxOdbvMhkzhAowaiEjuGS
나이 출력
문제
https://school.programmers.co.kr/learn/courses/30/lessons/120820
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
머쓱이는 40살인 선생님이 몇 년도에 태어났는지 궁금해졌습니다.
나이 age가 주어질 때, 2022년을 기준 출생 연도를 return 하는 solution 함수를 완성해주세요.
해결방안
2022-age+1 -> 2023-age
소스코드
function solution(age) {
return 2023-age;
}
https://www.youtube.com/watch?v=eXr_QkkglrY&list=PLkfUwwo13dlWZxOdbvMhkzhAowaiEjuGS&index=2
각도기
문제
https://school.programmers.co.kr/learn/courses/30/lessons/120829
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
각에서 0도 초과 90도 미만은 예각,
90도는 직각,
90도 초과 180도
미만은 둔각 180도는 평각으로 분류합니다.
각 angle이 매개변수로 주어질 때 예각일 때
1, 직각일 때
2, 둔각일 때
3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.
소스코드
function solution(angle) {
if(angle < 90){
return 1
}else if(angle === 90){
return 2
}else if(angle < 180){
return 3
}else {
return 4
}
}
https://www.youtube.com/watch?v=5hgmbhORUhY&list=PLkfUwwo13dlWZxOdbvMhkzhAowaiEjuGS&index=3