728x90
반응형
백준알고리즘
- Bronze 3 -
#1703. 생장점 by Java and Javascript
문제
출처: https://www.acmicpc.net/problem/1703
접근 방법
문제가 번역투라 이해하는데 시간이 조금 걸렸다.
입력되는 값의 한 줄을 봤을 때 맨 앞 숫자는 최종적인 나무의 나이이고,
이어서 나열되는 숫자들을 2개씩 잘라서 봤을 때 각 생장점 당 자라나는 나무줄기의 수와 잘라낸 가지의 수이다.
입력 예시 중 세 번째에 있는 "3 3 0 2 0 2 0"를 보면, "3 / 3 0 / 2 0 / 2 0" 으로 쪼개서 볼 수 있고, 이는 즉 3년된 나무이고, 첫 해에 3개의 가지가 돋아났으며 잘라낸 가지는 없음. 다음 해엔 각 가지마다 2개씩 돋아나고 잘라낸 가지는 0개, 마지막해에도 각 가지당 2개씩 돋아나고 잘라낸 가지는 0개 라는 말이다.
따라서 마지막 가지의 수를 a, 다음 해의 자라나는 가지의 수(생장점 당)를 b, 잘라내는 가지의 수를 c 라고 하면
다음 해의 가지의 수는 a * b - c가 된다.
처음 0년째의 가지의 수는 1이므로 곱셈에도 문제가 없다.
풀이
▶ Java
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int a = 0; // 나무의 나이
int b = 1; // 각 해에 남은 가지 수(0년차에는 1)
while(true) {
StringTokenizer st = new StringTokenizer(br.readLine());
a = Integer.parseInt(st.nextToken());
if(a == 0) break;
for(int i=0; i<a; i++) {
b *= Integer.parseInt(st.nextToken()); // 각 생장점마다 자라난 가지의 수를 곱해줌
b -= Integer.parseInt(st.nextToken()); // 잘라낸 가지의 수를 빼줌
}
System.out.println(b);
// 초기화
a = 0;
b = 1;
}
br.close();
}
}
▶ Javascript (node.js)
var fs = require('fs');
var input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
for(var i=0; i<input.length - 1; i++){
main(input[i]); // \n으로 나눠서 br.readLine()의 역할을 해줌
}
function main(input){
var tree = input.toString().trim().split(' ').map(Number); // st.nextToken()의 역할
var year = parseInt(tree[0]);
var bridge = 1;
for(var i=1; i<=year*2; i+=2){ // 각 해마다 두 번의 계산이 필요하므로 year*2만큼 반복해야함
// i는 두 개씩 커짐
bridge *= tree[i];
bridge -= tree[i+1];
}
console.log(bridge);
}
결과
End.
heisely's 괴발개발 개발일지
728x90
반응형
'알고리즘 > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘] #4864. Gold Coins (by Java and Javascript) (0) | 2023.05.12 |
---|---|
[백준알고리즘] #2455. 지능형 기차 (by Java and Javascript) (0) | 2022.09.28 |
[백준알고리즘] #1598. 꼬리를 무는 숫자 나열(by Java and Javascript) (0) | 2022.09.13 |
[백준알고리즘] #1547. 공 (by Java and Javascript) (0) | 2022.09.12 |
[백준알고리즘] #1284. 집 주소 (by Java and Javascript) (0) | 2022.09.09 |