코딩테스트/Baekjoon 59

[백준 #14912] 숫자 빈도 수 (node.js)

https://www.acmicpc.net/problem/14912 14912번: 숫자 빈도수 자연수 n (1 ≤ n ≤ 100,000)과 한 자리 숫자 d(0~9)가 첫째 줄에 주어진다. www.acmicpc.net toString().split(' ').map(Number)로 입력받은 값을 공백 기준으로 나눈 후, 각 원소를 숫자로 만들어주었다. 그다음 input[0]는 변수 n, input [1]은 변수 d에 넣어주었다. (input [1]을 문자열로 바꾼 이유는 객체 key 값으로 사용할 것이기 때문이다) 그리고 1부터 n까지 for 문을 돌면서 toString().split('')으로 해당 숫자를 한 글자씩 나누어 배열로 만들어 주었다 (해당 숫자의 자릿수를 모르기 때문) 그 후, map을 사용..

[백준 #25304] 영수증 (node.js)

https://www.acmicpc.net/problem/25304 25304번: 영수증 준원이는 저번 주에 살면서 처음으로 코스트코를 가 봤다. 정말 멋졌다. 그런데, 몇 개 담지도 않았는데 수상하게 높은 금액이 나오는 것이다! 준원이는 영수증을 보면서 정확하게 계산된 것 www.acmicpc.net 입력 값을 split('\n')을 사용하여 공백 기준으로 나누어 배열을 만든 후, input[0]을 영수증에 적힌 총금액 변수인 resultSum에 넣고 input[1]을 구매한 물건의 종류의 수 변수인 bought에 넣어주었다. (둘 다 Number를 사용하여 숫자로 변환) 그다음 물건 종류 수만큼 for문을 돌며 인덱스로 input에 접근하여 tmpStr에 넣어주고 (ex. input[3] -> 200..

[백준 #3003] 킹, 퀸, 룩, 비숍, 나이트, 폰 (node.js)

https://www.acmicpc.net/problem/3003 3003번: 킹, 퀸, 룩, 비숍, 나이트, 폰 첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다. 이 값은 0보다 크거나 같고 10보다 작거나 같은 정수이다. www.acmicpc.net 먼저 입력 값을 split(' ')을 사용하여 공백 기준으로 나누어 배열을 만든 후 map과 Number를 사용하여 각 원소를 숫자로 만들어주었다. 그다음 정해진 체스 피스의 개수를 배열로 만든 후, map을 사용하여 해당 배열을 돌면서 각 원소와 입력 값으로 만든 배열 값의 차를 answer에 넣어서 공백으로 이어주었다. const input = require('fs').readFileSync('/dev/stdin')..

[백준 #3052] 나머지 (node.js)

https://www.acmicpc.net/problem/3052 3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 이 문제는 숫자를 42로 나눈 나머지들 중에 서로 다른 나머지의 개수를 출력하는 것이다. 따라서 중복을 제거한 값들의 집합인 Set 객체를 사용하였다. 먼저 입력값을 \n 기준으로 나눈 후 map과 Number를 이용하여 정수로 변환해주었다. 그리고 set 객체를 하나 선언하고, map을 사용하여 input 배열을 돌며 해당 수를 42로 나눈 나머지를 set에 추가해주었다. set은 중복을 제거해주기 때문에 set.size를 출력하면 서로 다른 나머지의 개수를 구할 ..

[백준 #2577] 숫자의 개수 (node.js)

https://www.acmicpc.net/problem/2577 2577번: 숫자의 개수 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. www.acmicpc.net 입력받은 값을 \n 기준으로 나누고 map과 Number를 사용하여 정수로 변환해주었다. 입력 값이 3개인 것이 나와있으므로 인덱스를 통해 배열에 접근하여 해당 값을 다 곱해주었다. 그리고 곱한 값을 한 글자씩 나누어 배열에 넣고 map과 Number를 사용하여 정수로 변환해주었다. 마지막으로 0부터 9까지 몇 번 등장하는지 세기 위해 for문을 사용하였고, 변수 i가 0부터 9까지 1씩 커져가며 filter 메서드를 통해 배열 안에 i 값과 같은 것..

[백준 #2562] 최댓값 (node.js)

https://www.acmicpc.net/problem/2562 2562번: 최댓값 9개의 서로 다른 자연수가 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 번째 수인지를 구하는 프로그램을 작성하시오. 예를 들어, 서로 다른 9개의 자연수 3, 29, 38, 12, 57, 74, 40, 85, 61 이 주어 www.acmicpc.net 입력받은 값을 \n 단위로 잘라 map과 Number를 사용하여 정수로 변환해주었다. 그리고 spread 연산자를 사용해 새로운 배열 변수를 만들어 이 값을 복사해 주었다. 그다음 sort를 사용해 해당 배열을 오름차순으로 정렬하여 배열 안에 마지막 인덱스를 통해 최댓값을 구했고, indexOf를 사용하여 정렬 전 기존 배열에서 최댓값의 위치를 알아냈다. const..

[백준 #16953] A → B (C++)

https://www.acmicpc.net/problem/16953 16953번: A → B 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다. www.acmicpc.net A와 B의 값이 같을 때는 break를 사용해 while 문을 종료시키고, A가 B보다 크거나, B가 1로 끝나지 않고 2로 나누어 떨어지지 않을 때는 -1을 출력하게 했다. 그리고 B가 1로 끝나면 마지막 자릿수(1)를 제외한 값을 B에 넣어주었고, B가 2로 나누어 떨어지면 B를 2로 나눈 값을 B에 넣어주었다. 위 두개의 연산을 할 때마다 cnt++를 실행해주었고, 출력 조건이 필요한 연산의 최솟값에 1을 더한 값을 출력하는 것이므로 cnt의 초깃값을 0이 아닌 1로 설정해주었다. *** B가 1로 끝나는지 판단하기..

[백준 #10610] 30 (C++)

https://www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한 www.acmicpc.net 가장 먼저 입력받은 문자열에 문자마다 -'0'을 하여 정수형으로 바꿔주고 int 형 배열에 넣어주었다. 그리고 가장 큰 수를 만들기 위해 내림차순으로 배열을 정렬한 후, 배열에 있는 값을 다 더하고 이것이 3의 배수이면서 마지막 숫자가 0이라면 30의 배수이기 때문에 그 배열을 차례로 출력하였고, 만약 아니라면 -1을 출력해주었다. 문자열 길이만큼의 크기를 가진 정수형 배열을 선언하기 위해 new를..

[백준 #11047] 동전 0 (C++)

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 동전의 종류 N개와 동전으로 만들 합 K를 입력하고 for 문을 사용해 N가지의 동전 값을 입력받아 K보다 작은 것들만 벡터에 넣어주었다. (K보다 큰 동전 값은 필요가 없기 때문이다.) 그리고 큰 동전 값부터 나누기 위해 reverse를 사용하여 벡터를 내림차순으로 정렬시켰다. (동전 값을 오름차순으로 입력했기 때문) 그다음 for..

[백준 #1158] 요세푸스 문제 (C++)

https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 문제에서는 n이 7, k가 3이기 때문에 1부터 7까지 큐에 넣어주고 큐 사이즈가 1보다 클 때 까지 for문을 돌며 0, 1 번째 인덱스 원소는 큐에 다시 추가해준 후 앞에서 제거하고 2번째 인덱스 (즉 k번째 사람)은 출력 후 제거해주었다. 그리고 큐 안에 원소가 하나만 남았을 때 while문을 나와 해당 요소를 출력 후 제거해주었다. 출력 형식이 여서 마지막 출력 값에는 ',' 을 붙이지 않기 위해 한 것이다. 1 2 3 4 5 6 7 3 4 5 6 7 1 2 4 ..