✏️ 현재 상황에서 당장 가장 좋아보이는 상황만을 선택하는 알고리즘이다.
✏️ 동전0 https://www.acmicpc.net/problem/11047
11047번: 동전 0
첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수)
www.acmicpc.net
✏️ ATM https://www.acmicpc.net/problem/11399
11399번: ATM
첫째 줄에 사람의 수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 각 사람이 돈을 인출하는데 걸리는 시간 Pi가 주어진다. (1 ≤ Pi ≤ 1,000)
www.acmicpc.net
✏️ 잃어버린 괄호 https://www.acmicpc.net/problem/1541
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString();
let result = 0;
let minusGrp = input.split('-');
for(let i=0; i<minusGrp.length; i++){
let plusSum = minusGrp[i].split('+').map(Number).reduce((a,b)=>a+b);
if(i==0) result += plusSum;
else result -= plusSum;
}
console.log(result);
✏️ 설탕 배달 https://www.acmicpc.net/problem/2839
2839번: 설탕 배달
상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그
www.acmicpc.net
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin');
let result = 0;
while(input >= 0){
if(input == 0 || input % 5 == 0){
result += parseInt(input/5);
input %= 5;
break;
}
input -= 3;
result +=1 ;
}
if(input<0) result=-1;
console.log(result);
처음에는 순서대로 5로 나눈 몫을 세고, 그 나머지 값으로 3으로 나눈 몫을 세고 3으로 나눈 나머지값이 0보다 클 경우 -1을 리턴하면 된다고 생각 했는데 그럼 input이 11일 경우 5로 나눈 나머지값이 1이기 때문에 3으로 나누지도 못하고 남은 값이 1이라 결국 -1이 리턴된다... 그래서 5로 나누어 떨어지는 경우가 될때까지 3을 우선적으로 빼줘야된다.
✏️ 💢헤맸으니 다시 풀어보자💢 A → B https://www.acmicpc.net/problem/16953
16953번: A → B
첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다.
www.acmicpc.net
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
let [a, b] = input[0].split(' ').map(Number);
let result = 1;
let flag = false;
while(a <= b){
if (a==b){
flag = true;
break;
}
if(b%2 == 0) {
b = parseInt(b/2);
}
else if (b%10 == 1) {
b = parseInt(b/10);
}
else {
break;
}
result ++;
}
if (flag) console.log(result);
else console.log(-1);
✏️ 수들의 합 https://www.acmicpc.net/problem/1789
1789번: 수들의 합
첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다.
www.acmicpc.net
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
let n = Number(input[0]);
let sum = 0;
let current = 0;
while(sum<=n){
current ++;
sum += current;
}
console.log(current-1);
✏️ 💢헤맸으니 다시 풀어보자💢 신입 사원 https://www.acmicpc.net/problem/1946
1946번: 신입 사원
첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성
www.acmicpc.net
let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
let testCase = Number(input[0]);
let startLine = 1;
for(let i=0; i<testCase; i++){
let lineCnt = Number(input[startLine]);
let arr = [];
for(let j=startLine; j<=startLine+lineCnt; j++){
let data = input[j].split(' ').map(Number);
arr.push(data);
}
arr.sort((a,b) => a[0]-b[0]);
let cnt = 0;
let min = 10000000;
for(let [x, y] of arr){
if(y<min){
min = y;
cnt ++;
}
}
console.log(cnt);
startLine += lineCnt+1;
}
'코딩테스트' 카테고리의 다른 글
JS 탐욕(Greedy) 알고리즘 심화 34 (0) | 2023.06.01 |
---|---|
JS 정렬 문제 (0) | 2023.05.30 |
코딩테스트를 위한 정렬 (0) | 2023.05.25 |
코딩테스트를 위한 자료구조 (0) | 2023.05.24 |
JS 문자열 문제 (0) | 2023.05.24 |