코딩연습(68)
-
[백준 알고리즘] Node.js 2167. 2차원 배열의 합
1. 문제 https://www.acmicpc.net/problem/2167 2167번: 2차원 배열의 합 첫째 줄에 배열의 크기 N, M(1 ≤ N, M ≤ 300)이 주어진다. 다음 N개의 줄에는 M개의 정수로 배열이 주어진다. 배열에 포함되어 있는 수는 절댓값이 10,000보다 작거나 같은 정수이다. 그 다음 줄에는 www.acmicpc.net 2. 풀이 첫째줄에는 2차원 배열의 크기를 알려준다. 이를 바탕으로 2차원 배열을 만들어준다. K 값을 이용하여 반복문을 작성하고, 각각 i, j, x, y 를 이용하여 합을 구해주면 된다. (1,1) 부터 (2,3) 까지의 합은 (1,1) + (1,2) + (1,3) + (2,1) + (2,2) + (2,3) 의 합이 된다. const inputs = re..
2023.12.18 -
[백준 알고리즘] Node.js 2057. 팩토리얼 분해
1. 문제 https://www.acmicpc.net/problem/2057 2057번: 팩토리얼 분해 음 아닌 정수 N이 주어졌을 때, 이 수를 서로 다른 정수 M(M ≥ 1)개의 팩토리얼의 합으로 나타낼 수 있는지 알아내는 프로그램을 작성하시오. 예를 들어 2=0!+1!로 나타낼 수 있지만, 5는 이와 같은 www.acmicpc.net 2. 풀이 서로 다른 정수로 팩토리얼의 합을 나타낼 수 있는지 알아보는 문제이다. 꼭 연속적인 숫자로 만들 필요가 없다! 0! 이 "YES"로 나올 것 같지만 "NO" 란다. 문제가 애매한 느낌이다. // 받아온 값을 BigInt로 변환. N의 값이 1,000,000,000,000,000,000 까지 이기 때문. const num = BigInt(require('fs'..
2023.12.11 -
[백준 알고리즘] Node.js 1485. 정사각형 만들기
1. 문제 https://www.acmicpc.net/problem/1485 1485번: 정사각형 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 네 줄로 이루어져 있으며, 점의 좌표가 한 줄에 하나씩 주어진다. 점의 좌표는 -100,000보다 크거나 같고, 100,000보다 작거나 같 www.acmicpc.net 2. 풀이 질문게시판에 있는 풀이를 참고하였다. 중심으로부터 각 점까지의 길이가 모두 동일한 지 확인하고, 중심을 원점으로 이동시키면서 각 점도 중심이 원점으로 이동한 만큼 이동시킨다. 이동한 점들을 90도 회전시키고, 이 회전 시킨 점들이 2번에 있는 점들과 동일하다면 정사각형이 된다. const inputs = require('fs').readFileSync('/dev/..
2023.12.07 -
[백준 알고리즘] Node.js 1448. 삼각형 만들기
1. 문제 https://www.acmicpc.net/problem/1448 1448번: 삼각형 만들기 첫째 줄에 빨대의 개수 N이 주어진다. N은 3보다 크거나 같고, 1,000,000보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 빨대의 길이가 한 줄에 하나씩 주어진다. 빨대의 길이는 1,000,000보다 www.acmicpc.net 2. 풀이 빨대들의 길이가 주어지면 이 길이들을 통해 세 변의 길이가 최댓값을 찾는 문제이다. 세 변의 길이로 삼각형을 만드는 조건은 가장 큰 변의 길이가 나머지 두 변의 길이의 합보다 작아야 한다. 예제 1번을 보면 가장 큰 변의 길이가 3, 나머지 두 변의 길이의 합이 3이기에 삼각형을 만들 수 없어 -1 을 출력한다. 미리 빨대들의 길이를 내림차순 정렬한 후..
2023.12.05 -
[백준 알고리즘] Node.js 1021. 회전하는 큐
1. 문제 https://www.acmicpc.net/problem/1021 2. 풀이 둘째 줄에 있는 숫자를 뽑아내기 위해 왼쪽이동, 오른쪽이동을 얼마나 최소화할 수 있는지를 구하는 문제이다. 예제 입력 2 를 예시로 들어 8이 나오는 이유를 알아보자. 10의 크기를 가진 배열이 있다. / [1,2,3,4,5,6,7,8,9,10] 2를 뽑아내기 위해 오른쪽 이동과 왼쪽 이동의 수를 비교하고, 왼쪽으로 1번 이동한다. / [2,3,4,5,6,7,8,9,10,1] 2를 뽑아낸다. / [3,4,5,6,7,8,9,10,1] 9를 뽑아내기 위해 오른쪽 이동과 왼쪽 이동의 최소값을 찾고 오른쪽으로 3번 이동한다. / [9,10,1,3,4,5,6,7,8] 9를 뽑아낸다. / [10,1,3,4,5,6,7,8] 5를 ..
2023.11.29