오늘은 알고리즘 테스트가 있었다.
문제가 백준 문제를 변형한 문제라 크게 어렵지 않았다.
function solution(num){
let coin = [500, 100, 50, 10];
let change = 1000 - num; //거슬러줄 돈을 구해 변수로 선언한다. change = 840원
let count = 0; //동전의 갯수의 초기값을 0으로 선언한다.
for( let i = 0; i < coin.length; i++) {
//동전 갯수를 최소로 걸러주려면 큰 단위인 500원부터 거슬러줄 수 있는 갯수를 구한다.
count += parseInt(change/coin[i])
//거슬러줄 돈을 500원으로 나누면 1.xxx의 수가 나온다 즉, 1개를 거슬러줄 수 있다. 이 값을 카운트에 더한다.
change = change%coin[i];
// 500원을 거슬러주면 340원이 남는다. 즉, 거슬러줄돈을 동전단위로 나눈 나머지 값으로 거슬러줄 돈을 다시 선언해준다.
// 500원 1번, 100원 3번, 50원 0번, 10원 4번 총 8번 카운트 됐고 즉, 8개의 동전이 최소 동전이다.
}
return count;
}
let num1 = 160;
console.log(solution(num1));
"OOXXOXXOOO"와 같은 OX문의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
(단, OX문의 결과는 0보다 크고 80보다 작은 문자열이 주어진다. 또한 문자열은 O와 X만으로 이루어져 있다.)
//문제 중. 동그라미 엑스로 숫자를?
function solution(str){
let count = 0; //"O" 의 갯수를 세기위해 초기값 0으로 선언
let sum = 0; // 카운트 된 값을 더해주기 위해 초기값 0으로 선언
for (let i = 0; i < str.length; i++)
str[i] === "O" ? count ++ : count = 0; // 각문자열을 확인해서 "O"면 카운트하고 아니면 카운트를 다시 0으로 초기화한다.
sum += count; // 카운트값들을 sum 에 누산한다.
return sum; // 27
}
let str="OXOOOXXXOXOOXOOOOOXO";
console.log(solution(str))