첫 줄에 수의 개수 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
오류 목록00F8 ↓ · ⇧F8 ↑
입력(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);