일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- 자바스크립트
- 13913번
- 17626번
- 한윤정이 이탈리아에 가서 아이스크림을 사먹는데
- 16953번
- 2422번
- 타입스크립트
- 5014번
- 1541번
- 123만들기
- 타입스크립트 프로그래밍
- 1926번
- node.js
- 5427번
- 14940번
- 20365번
- 6593번
- javascript
- 알고리즘
- 2503번
- 맥주마시면서걸어가기
- 백준
- 풀이
- 7526번
- 토마토
- 16439번
- 20300번
- 나이트의이동
- 1969번
- 정리
Archives
- Today
- Total
Sqsung DevLog
[백준] 16439번: 치킨치킨치킨 - Node.js (자바스크립트) 본문
1. 문제 ㅡ 16439번: 치킨치킨치킨 (난이도: Silver IV)
16439번: 치킨치킨치킨
첫 번째 줄에 고리 회원의 수 N (1 ≤ N ≤ 30) 과 치킨 종류의 수 M (3 ≤ M ≤ 30) 이 주어집니다. 두 번째 줄부터 N개의 줄에 각 회원의 치킨 선호도가 주어집니다. i+1번째 줄에는 i번째 회원의 선
www.acmicpc.net
2. 풀이 ㅡ Node.js (자바스크립트)
const [info, ...input] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
const [M, C] = info.split(' ').map(val => +val);
const preferences = input.map(row => row.split(' ').map(val => +val));
const solution = () => {
let max = -Infinity;
for (let i = 0; i < C - 2; i++) {
for (let j = i + 1; j < C - 1; j++) {
for (let k = j + 1; k < C; k++) {
let total = 0;
for (let m = 0; m < M; m++) {
total += Math.max(preferences[m][i], preferences[m][j], preferences[m][k]);
}
if (total >= max) max = total;
}
}
}
return max;
};
console.log(solution());
2-1. 풀이 설명
입력으로 주어진 회원/치킨 종류의 수 모두 30 이하였다. 즉, 별다른 로직 없이 여러 중첩 반복문을 돌려서 말 그대로 브루트포스로 접근해도 쉽게 풀리는 문제였다. (시간: 180ms)
추가 설명을 해보자면 3개의 치킨 종류를 조합하고(예: 0-1-2, 1-2-3, 등), 치킨 종류 별로 각 회원의 만족도 점수 중 최댓값을 total 변수에 저장해두었다. 이후 max 값보다 현재 조합에서 계산된 total 값이 더 높은 경우 max 변수에 total 값을 재할당 해주었다. 반복문이 끝난 후에는 max 값을 반환해주었다.
'Algorithm' 카테고리의 다른 글
[백준] 20300번: 서강근육맨 - Node.js (자바스크립트) (0) | 2023.06.09 |
---|---|
[백준] 2422번: 한윤정이 이탈리아에 가서 아이스크림을 사먹는데 - Node.js (자바스크립트) (1) | 2023.06.08 |
[백준] 9095번: 1, 2, 3 만들기 - Node.js (자바스크립트) (0) | 2023.06.05 |
[백준] 1463번: 1로 만들기 - Node.js (자바스크립트) (0) | 2023.06.05 |
[백준] 11279번: 최대 힙 - Node.js (자바스크립트) (0) | 2023.06.02 |