{ }codelper
멈추기·건너뛰기P0023

처음 나오는 배수

첫 줄에 수의 개수 n과 정수 k가, 둘째 줄에 정수 n개가 주어진다.
앞에서부터 보면서 k로 나누어떨어지는 수가 처음 나오면 그 수를 출력하라.
그런 수가 하나도 없으면 "없음"을 출력하라.
0과 음수도 k로 나누어떨어질 수 있다(0은 모든 k로 나누어떨어지고, -8은 4로 나누어떨어진다).

입력
1 ≤ n ≤ 1000, 1 ≤ k ≤ 1000, 각 수는 -1,000,000,000 이상 1,000,000,000 이하
출력
처음 나오는 k의 배수, 또는 "없음"
예시 1 · stdin
4 3
4 9 6 12
stdout
9
예시 2 · stdin
3 7
1 2 3
stdout
없음
main.py
입력(stdin)

실행하면 이 줄들이 차례로 input()·표준 입력으로 들어가요(실행 중에 묻지 않아요).

$ 준비됐어요

코드를 입력해 풀려면 PC에서 열어 주세요. 모바일에서는 문제와 풀이를 볼 수 있어요.

다른 언어로는?언어별 풀이 보기 · 8개 언어 풀이

break를 빠뜨리면 계속 돌아서 마지막 배수가 남아요.
또 흔한 실수는 반복 안의 else에서 "none"을 정하는 것이에요.
그러면 첫 수만 보고 끝나요.
"없음"은 반복이 다 끝난 뒤에야 알 수 있어요.
그 방법이 언어마다 달라요: Python에는 for … else가 있어서 break 없이 끝났을 때만 else가 돌아요.
C는 반복 변수를 밖에 두고 i < n이면 break로 나온 것으로 봐요.
Java·C#·C++·JS는 found 같은 변수를 "none"으로 시작해 찾으면 바꾸고 멈춰요.
음수 나머지는 Python이 -3 % 2 == 1, 나머지 언어가 -1로 다르지만, == 0과 비교할 때는 결과가 같아서 이 문제에선 상관없어요.
크레이콘은 그만;으로 멈추고 각각 (x 에서 a)로 돌아요.

Pythonmain.py · 7 줄
n, k = map(int, input().split())for x in map(int, input().split()):    if x % k == 0:        print(x)        breakelse:  # break 없이 다 돌았을 때만 실행된다    print("없음")
JavaScriptmain.js · 9 줄
const [n, k, ...a] = require("fs").readFileSync(0, "utf8").trim().split(/\s+/).map(Number);let found = "없음";for (const x of a) {  if (x % k === 0) {    found = x;    break;  }}console.log(String(found));
TypeScriptmain.ts · 10 줄
import { readFileSync } from "node:fs";const [n, k, ...a]: number[] = readFileSync(0, "utf8").trim().split(/\s+/).map(Number);let found: number | string = "없음";for (const x of a) {  if (x % k === 0) {    found = x;    break;  }}console.log(String(found));
JavaMain.java · 17 줄
import java.util.Scanner; public class Main {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        int n = sc.nextInt(), k = sc.nextInt();        String found = "없음";        for (int i = 0; i < n; i++) {            int x = sc.nextInt();            if (x % k == 0) {                found = String.valueOf(x);                break;            }        }        System.out.println(found);    }}
C#Main.cs · 20 줄
using System; class Program{    static void Main()    {        int k = int.Parse(Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries)[1]);        string found = "없음";        foreach (string s in Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries))        {            int x = int.Parse(s);            if (x % k == 0)            {                found = x.ToString();                break;            }        }        Console.WriteLine(found);    }}
C++main.cpp · 17 줄
#include <iostream>#include <string> int main() {    int n, k;    std::cin >> n >> k;    std::string found = "없음";    for (int i = 0; i < n; i++) {        int x;        std::cin >> x;        if (x % k == 0) {            found = std::to_string(x);            break;        }    }    std::cout << found << "\n";}
Cmain.c · 14 줄
#include <stdio.h> int main(void) {    int n, k, x, i;    scanf("%d %d", &n, &k);    for (i = 0; i < n; i++) {        scanf("%d", &x);        if (x % k == 0) break;    }    /* break로 나왔으면 i < n */    if (i < n) printf("%d\n", x);    else puts("없음");    return 0;}
Craykonmain.cray · 13 줄
first = 콘솔.수들읽기();k = first[1];a = 콘솔.수들읽기();found = "없음";각각 (x 에서 a){    만약 (x % k == 0)    {        found = x;        그만;    }}콘솔.쓰기(found);