TIL21-01 알고리즘 테스트

김태혁·2023년 2월 2일
0

TIL

목록 보기
73/205

오늘은 알고리즘 테스트가 있었다.
문제가 백준 문제를 변형한 문제라 크게 어렵지 않았다.

  1. 물건을 구매해볼까?
    르탄이가 1000원을 가지고 편의점에서 물건을 사려고 한다. 편의점에는 500원, 100원, 50원, 10원이 충분히 있고, 편의점 직원은 언제나 거스름돈 개수가 가장 적게 잔돈을 준다. 르탄이가 편의점에서 물건을 사고 1000원 지폐 한 장을 냈을 때, 받을 잔돈의 개수를 구하는 프로그램을 작성하여라. (단, 물건의 가격은 10원 이상 1000원 미만이며, 1원 단위는 고려하지 않는다.)
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));
  1. 동그라미 엑스로 숫자를?

"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))
profile
도전을 즐기는 자

0개의 댓글