#2884: 알람 시계

#2884: 알람 시계

Java 16
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int input1 = sc.nextInt();
        int input2 = sc.nextInt();

        if(input2 - 45 < 0) {
            input2 += 60;
            input1 -= 1;
        }
        if(input1 < 0){
            input1 = 23;
        }

        input2 -= 45;

        System.out.printf("%d %d", input1, input2);
    }
}

이거 예전에 풀어봤던 문제 같은ㄷ

C
#include <stdio.h>

int main() {
    int h, m; scanf("%d%d", &h, &m);
    int t = (60 * h + m + 1395) % 1440;
    printf("%d %d", t / 60, t % 60);
    return 0;
}
C++
#include <iostream>

auto main() -> int {
    int h, m; std::cin >> h >> m;
    auto t = (60 * h + m + 1395) % 1440;
    std::cout << t / 60 << ' ' << t % 60;
    return 0;
}
C#
using System;

string[] s = Console.ReadLine().Split(" ");
int h = int.Parse(s[0]);
int m = int.Parse(s[1]);
int t = (60 * h + m + 1395) % 1440;
Console.Write($"{t / 60} {t % 60}")
Python
h, m = map(int, input().split())
t = (60 * h + m + 1395) % 1440
print(f"{t // 60} {t % 60}")
Java
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int h = sc.nextInt();
        int m = sc.nextInt();
        int t = (60 * h + m + 1395) % 1440;
        System.out.printf("%d %d", t / 60, t % 60);
    }
}
Kotlin
import java.util.StringTokenizer

fun main() {
    val token = StringTokenizer(readLine())
    val h = token.nextToken().toInt()
    val m = token.nextToken().toInt()
    val t = (60 * h + m + 1395) % 1440
    println("${t / 60} ${t % 60}")
}
Pascal
var
    h, m, t: integer;
begin
    read(h, m);
    t := (60 * h + m + 1395) mod 1440;
    write(t div 60, ' ', t mod 60);
end.
Haskell
import Text.Printf

main :: IO ()
main = getLine >>= putStr . f . g . map (read :: String -> Int) . words where
    f x = printf "%d %d" (x `div` 60) (x `mod` 60)
    g [x, y] = (60 * x + y + 1395) `mod` 1440
Rust
fn main() {
    let mut s = String::new();
    std::io::stdin().read_line(&mut s).unwrap();
    let s = s
        .split_whitespace()
        .map(|s| s.parse::<i32>().unwrap())
        .collect::<Vec<_>>();
    let t = (60 * s[0] + s[1] + 1395) % 1440;
    println!("{} {}", t / 60, t % 60);
}
Ruby
h, m = gets.split.collect {|x| x.to_i}
t = (60 * h + m + 1395) % 1440
puts "#{t / 60} #{t % 60}"
2 Likes

진짜로 10개 언어로 코딩하셨네…
그건 그렇고

int t = (60 * h + m + 1395) % 1440;
System.out.printf("%d %d", t / 60, t % 60);

이거는 또 무슨 원리인지 궁금하네요
역시 알고리즘 잘 짜려면 수학도 잘해야 하는건가…

입력받은 h와 m을 분 단위로 변환한 뒤에 45분을 빼는 원리입니다