문제 내용은 입력으로 E S M 세 개를 받아 1씩 올리면서 입력에 맞는 값이 나왔을 때 최소 횟수를 출력해줘야 하는데 E의 경우에는 15 초과하면 1로 돌아가고 S와 M의 경우네는 28, 19로 숫자만 다를 뿐 기준은 동일하다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] target = Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int count = 1;
int e = 1;
int s = 1;
int m = 1;
while (true) {
if (e == target[0] && s == target[1] && m == target[2]) {
System.out.println(count);
break;
}
e = count % 15 + 1;
s = count % 28 + 1;
m = count % 19 + 1;
count++;
}
}
}
문제를 풀어보자면 1부터 계속 증가시키면서, E S M 이 맞는지 확인해야 하는데, 초기화되는 부분은 %를 사용해서 해당 수에 도달할 때마다 나눠주면서 반복문 돌리면 숫자 맞는 순간 횟수만 출력해주면 끝이다.
Leave a Reply