프로그래머스 알고리즘 테스트
양꼬치
- 프로그래머스 알고리즘 0단계를 이어서 풀이했다
solution.js
function solution(n, k) {
var answer = 0;
return answer;
}
고기의 총가격 n과 음료수의 총가격k를 더한뒤, 10인분당 음료수 갯수 1개의 가격을 빼는 식을 짠다.
ex)26인분 = 음료수2개서비스
나의 풀이
function solution(n, k) {
return (n * 12000) +(k * 2000) - (parseInt(n/10)*2000 ) ;
}
다른 풀이1
function solution(n, k) {
let price = (n * 12000) + (k-Math.floor(n/10))*2000
return price;
}
피자 나눠 먹기(1)
solution.js
function solution(n, k) {
var answer = 0;
return answer;
}
피자를 나눠 먹을 사람 n을 모든 사람이 피자를 먹을 수 있는 최소 피자의 갯수로 나눈뒤 올림한다.
나의 풀이
- Math.ceil 메서드를 사용하여 n을 7로 나누고 나온수를 올림한다.
function solution(n) {
return Math.ceil(n/7) ;
}
다른 풀이1
function solution(n) {
return n % 7 === 0 ? n / 7 : parseInt(n / 7) + 1;
}
피자 나눠먹기(3)
solution.js
function solution(slice, n) {
var answer = 0;
return answer;
}
피자조각 수 slice를 피자를먹는 사람의 수 n으로 나누고 나온 나머지를 올림하여 최소 피자 판수를 구한다.
나의 풀이
function solution(slice, n) {
return Math.ceil(n/slice);
}
다른 풀이1
function solution(slice, n) {
return n%slice ? parseInt(n/slice)+1 : n/slice
}
점의 위치 구하기
solution.js
function solution(dot) {
var answer = 0;
return answer;
}
dot의 x와 y의 값이 0보다 큰지 작은지를 구분하고, 그에 맞는 리턴값을 부여한다.
나의 풀이
- dot[0] = x좌표 , dot[1] = y좌표 x와 y의 값이 0보다 큰지 작은지 구분하는 조건식을 만들었다.
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 {
return 4
}
}
다른 풀이1
function solution(dot) {
return dot[0] > 0 ? dot[1] > 0 ? 1 : 4 : dot[1] > 0 ? 2 : 3;
}
아이스 아메리카노
solution.js
function solution(money) {
var answer = 0;
return answer;
}
배열로된 money의 첫번째 값안에 가지고 있는돈 money를 아메리카노 한개 가격 5500원으로 나누고 나온값을 정수로 만들고, 아메리카노 한개가격을 money로 나눈의 남은 나머지를 두번째 값안에 넣는다.
나의 풀이
function solution(money) {
let answer = [parseInt(money/5500), ( money%5500)]
return answer ;
}
다른 풀이1
- parseInt와 비슷한 속성을 가진 Math.floor 메소드로 정수를 만들었다.
function solution(money) {
return [Math.floor(money / 5500), money % 5500];
}
다른 풀이2
function solution(money) {
let count = 0;
while (money >= 5500) {
money -= 5500;
count++
}
return [count, money]
}
옷가게 할인 받기
solution.js
function solution(price) {
var answer = 0
return answer ;
}
옷의 가격이 10만원 이상일때 할인율, 30만원 이상일때 할인율, 50만원 이상일떄 할인율을 설정하고 옷의 가격에 맞는 할인율을 조건문으로 작성한다.
나의 풀이
function solution(price) {
let halinyul = 0
if (100000 > price) {
halinyul = 0
}
else if (300000 > price && price >= 100000) {
halinyul = 0.05
}else if (300000 <= price && 500000 > price) {
halinyul = 0.1
} else {
halinyul = 0.2
}
let halin = (price - (price * halinyul))
return parseInt(halin);
}
다른 풀이1
- if문만 사용하여 50만원부터 10만원 까지 높은가격 부터 값을 차례대로 반환했다.
function solution(price) {
if (price >= 500000)
return parseInt(price*(1-0.2));
if (price >= 300000)
return parseInt(price*(1-0.1));
if (price >= 100000)
return parseInt(price*(1-0.05));
return price
}
제곱수 판별하기
solution.js
function solution(n) {
var answer = 0
return answer ;
}
정수 n이 어떤수의 제곱수라면 1을 출력하고 제곱수가 아니라면 2를 출력하는 식을 짠다.
나의 풀이
- Math.sqrt() 메소드를 사용하여 n의 값에 루트를 씌우고 루트를 씌운값의 나머지가 0일때 제곱수 이므로 1을 출력한다.
function solution(n) {
if((Math.sqrt(n) %1 === 0)){
return 1;
}
if((Math.sqrt(n) %1 !== 0)){
return 2;
}
}
다른 풀이1
- 삼항 연산자를 이용하여 n의 값이 정수로 떨어지는 값이 true면 1을 출력하고 거짓이면 2를 출력한다.
function solution(n) {
return Math.sqrt(n) % 1 === 0 ? 1 : 2;
}
느낀점:알고리즘 문제를 두번째 풀어 보았다. 확실히 첫번째 날보다 문제를 푸는 속도나 이해도가 조금 올라간 거 같아서
문제를 푸는게 재밌게 느껴졌다. 문제를 풀기전에 어떤 값을 구해야하고, 주어진 값을 어떻게 활용해야 하는지 노트에 정리하고 문제풀기를 시작하면 좀 더 어떤 값을 출력해야 하는지 명확하게 보이는 것 같아서 앞으로 문제 풀때 노트에 먼저 정리하고 값을 구하는 연습을 계속해봐야겠다.
할 일: 유튜브 알고리즘 테스트 보기, 모던자바스크립트 문서 훌어보고 중요한 내용 타이핑 해보기