inblog logo
|
LHS's Study Space
    랜덤마라톤알고리즘문제풀기

    [랜덤 마라톤] Modern Art(21616)

    lhs's avatar
    lhs
    Nov 16, 2024
    [랜덤 마라톤] Modern Art(21616)
    Contents
    1. 문제 풀이 아이디어2. 나의 정답 코드3. 정리
    www.acmicpc.net
    https://www.acmicpc.net/problem/21616
    notion image
    notion image

    1. 문제 풀이 아이디어

    • 같은 줄에 페인트를 칠하면 색이 원래대로 돌아온다.
    • 행과 열을 곱한 수만큼 색이 원래대로 돌아온다.
    • 위 두 가지 규칙을 생각하면 문제를 해결할 수 있다.

    2. 나의 정답 코드

    public class Main { public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); int m = Integer.parseInt(bufferedReader.readLine()); int n = Integer.parseInt(bufferedReader.readLine()); int k = Integer.parseInt(bufferedReader.readLine()); Set<String> set = new HashSet<>(); for (int i = 0; i < k; i++) { String command = bufferedReader.readLine(); if (set.contains(command)) { set.remove(command); } else { set.add(command); } } int r = 0, c = 0; for (String s : set) { if (s.startsWith("R")) r++; else c++; } System.out.println(r * n + c * m - r * c * 2); bufferedReader.close(); } }

    3. 정리

    • set에 입력을 저장하고, 중복되면 삭제한다.
    • set에 저장된 입력 중 행과 열의 개수를 각각 계산한다.
    • 각 행렬에 칠해진 수를 더한 후, 중복된 행렬의 값에 2를 곱해 빼면 답이 나온다.
    Share article

    LHS's Study Space

    RSS·Powered by Inblog