백준 16162 가희와 3단 고음 문제풀이 (JAVA)
문제
I'm in my dream~eam~eam ♬
3단 고음에 감명을 받은 가희는 고음 경진대회를 참관하기로 했다. 음의 계이름을 수로 표현해보자. '1옥타브 도'를 1로 표현하고 1음 올라갈 때마다 그 음을 표현하는 수도 1씩 커진다고 생각할 수 있다. 음 A를 시작으로 D음씩 올리면서 고음을 부르는 경우는 첫항이 A, 공차가 D인 등차수열로 표현되며, 이러한 등차수열의 항의 개수를 X라 할 때, 이 등차수열을 X단 고음이라고 한다. 아래는 A = 1, D = 2인 6단 고음이다.
이러한 경진대회에는 문제가 있었는데, 한 명 이상의 참가자들이 동시에 고음을 부르는 탓에 심사를 제대로 할 수 없다는 것이다. 그래서 우리는 수로 표현된 참가자들의 음이 순서대로 주어졌을 때 가능한 경우 중, 음 A를 시작으로 D음씩 올라가는 X단 고음으로 가능한 가장 큰 X를 구하려고 한다. 이를 도와주는 프로그램을 작성하자.
입력
첫째 줄에 참가자들의 음의 개수를 나타내는 정수 N(1 ≤ N ≤ 2 x 104), 고음의 첫 항과 공차를 의미하는 정수 A, D(1 ≤ A, D ≤ 107)가 공백으로 구분되어 주어진다.
둘째 줄에 참가자들의 음을 나타내는 N개의 정수가 순서대로 공백으로 구분되어 주어진다. 이 값은 107을 넘지 않는 양의 정수이다.
출력
음 A를 시작으로 D음씩 올라가는 X단 고음으로 가능한 가장 큰 X를 출력하라.
풀이
참가자들의 음을 배열에 넣고, 그 음들 중 targetValue와 같은지를 찾는다. 만약 같은 수가 있으면 maxStack을 1 증가시키고, targetValue에 다음 단으로 바꾼다.
소스코드
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
final int NUMBER_OF_VALUE = Integer.parseInt(st.nextToken());
int targetValue = Integer.parseInt(st.nextToken());
final int VALUE_GAP = Integer.parseInt(st.nextToken());
int value[] = new int[NUMBER_OF_VALUE];
st = new StringTokenizer(br.readLine());
for (int i = 0; i < NUMBER_OF_VALUE; i++) {
value[i] = Integer.parseInt(st.nextToken());
}
int maxStack = 0;
for (int i = 0; i < NUMBER_OF_VALUE; i++) {
if (value[i] != targetValue) {
continue;
}
maxStack++;
targetValue += VALUE_GAP;
}
sb.append(maxStack);
sb.append("\n");
bw.write(sb.toString());
bw.flush();
br.close();
bw.close();
}
}
Author And Source
이 문제에 관하여(백준 16162 가희와 3단 고음 문제풀이 (JAVA)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@phjppo0918/백준-16162-가희와-3단-고음-문제풀이-JAVA저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)