{ }codelper
음수 나머지P0016

며칠 뒤의 요일

요일을 번호로 나타낸다: 0 일요일, 1 월요일, 2 화요일, 3 수요일, 4 목요일, 5 금요일, 6 토요일.
첫 줄에 오늘의 요일 번호 d, 둘째 줄에 정수 k가 주어진다.
오늘로부터 k일 뒤의 요일 번호(0~6)를 출력하라.
k가 음수이면 |k|일 전을 뜻하고, 0이면 오늘이다.

입력
0 ≤ d ≤ 6, -1,000,000,000 ≤ k ≤ 1,000,000,000
출력
0 이상 6 이하의 요일 번호 한 줄
예시 1 · stdin
1
10
stdout
4
예시 2 · stdin
0
-1
stdout
6
main.py
입력(stdin)

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

$ 준비됐어요

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

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

핵심은 (d + k) % 7인데, 나머지의 부호가 언어마다 달라요.
Python의 %는 나누는 수(7)와 같은 부호라 -1 % 7이 6으로 바로 맞아요.
C·C++·Java·C#·JS·TS·크레이콘의 %는 나뉘는 수의 부호를 따라서(0 쪽으로 버린 나눗셈의 나머지) -1 % 7이 -1이에요.
그래서 ((d + k) % 7 + 7) % 7처럼 7을 더해 한 번 더 나눠요.
Java에는 이것을 해 주는 Math.floorMod(d + k, 7)이 있어요.
음수가 나왔다고 절댓값을 씌우면 안 돼요 — 일요일(0)의 하루 전이 토요일(6)이 아니라 월요일(1)이 돼요.
크레이콘은 ((d + k) % 7 + 7) % 7로 써요.

Pythonmain.py · 4 줄
d = int(input())k = int(input())# Python의 %는 나누는 수(7)와 같은 부호 — 늘 0~6이 나온다print((d + k) % 7)
JavaScriptmain.js · 3 줄
const [d, k] = require("fs").readFileSync(0, "utf8").trim().split(/\s+/).map(Number);// JS의 %는 나뉘는 수의 부호를 따라서 -1 % 7 === -1 — 7을 더해 한 번 더 나눈다console.log((((d + k) % 7) + 7) % 7);
TypeScriptmain.ts · 3 줄
import { readFileSync } from "node:fs";const [d, k]: number[] = readFileSync(0, "utf8").trim().split(/\s+/).map(Number);console.log((((d + k) % 7) + 7) % 7);
JavaMain.java · 11 줄
import java.util.Scanner; public class Main {    public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        int d = sc.nextInt();        int k = sc.nextInt();        // floorMod는 결과가 나누는 수와 같은 부호(0~6). %는 -1 % 7 == -1        System.out.println(Math.floorMod(d + k, 7));    }}
C#Main.cs · 12 줄
using System; class Program{    static void Main()    {        int d = int.Parse(Console.ReadLine().Trim());        int k = int.Parse(Console.ReadLine().Trim());        // C#의 %는 나뉘는 수의 부호를 따른다 — 7을 더해 0~6으로        Console.WriteLine(((d + k) % 7 + 7) % 7);    }}
C++main.cpp · 7 줄
#include <iostream> int main() {    int d, k;    std::cin >> d >> k;    std::cout << ((d + k) % 7 + 7) % 7 << '\n';}
Cmain.c · 9 줄
#include <stdio.h> int main(void) {    int d, k;    scanf("%d %d", &d, &k);    /* C의 %는 0 쪽으로 버린 나눗셈의 나머지라 음수가 나올 수 있다 */    printf("%d\n", ((d + k) % 7 + 7) % 7);    return 0;}
Craykonmain.cray · 4 줄
d = 콘솔.줄읽기().수로변환();k = 콘솔.줄읽기().수로변환();// 크레이콘의 %도 JS처럼 -1 % 7 == -1 — 7을 더해 한 번 더 나눈다콘솔.쓰기(((d + k) % 7 + 7) % 7);