λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
μ•Œκ³ λ¦¬μ¦˜

[Java] BOJ 1541 μžƒμ–΄λ²„λ¦° κ΄„ν˜Έ

by 🍊귀🍊 2024. 8. 2.

문제 

문제 링크 https://www.acmicpc.net/problem/1541

  • μ„Έμ€€μ΄λŠ” μ–‘μˆ˜μ™€ +, -, 그리고 κ΄„ν˜Έλ₯Ό 가지고 μ‹μ„ λ§Œλ“€μ—ˆλ‹€.
  • 그리고 λ‚˜μ„œ μ„Έμ€€μ΄λŠ” κ΄„ν˜Έλ₯Ό λͺ¨λ‘ 지웠닀.κ΄„ν˜Έλ₯Ό 적절히 μ³μ„œ 이 μ‹μ˜ 값을 μ΅œμ†Œλ‘œ λ§Œλ“œλŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜μ‹œμ˜€.
  • 그리고 λ‚˜μ„œ μ„Έμ€€μ΄λŠ” κ΄„ν˜Έλ₯Ό 적절히 μ³μ„œ 이 μ‹μ˜ 값을 μ΅œμ†Œλ‘œ λ§Œλ“€λ €κ³  ν•œλ‹€.
  • 첫째 쀄에 식이 주어진닀. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으둜 이루어져 있고, κ°€μž₯ 처음과 λ§ˆμ§€λ§‰ λ¬ΈμžλŠ” μˆ«μžμ΄λ‹€.
  • 그리고 μ—°μ†ν•΄μ„œ 두 개 μ΄μƒμ˜ μ—°μ‚°μžκ°€ λ‚˜νƒ€λ‚˜μ§€ μ•Šκ³ , 5μžλ¦¬λ³΄λ‹€ 많이 μ—°μ†λ˜λŠ” μˆ«μžλŠ” μ—†λ‹€.
  • μˆ˜λŠ” 0으둜 μ‹œμž‘ν•  수 μžˆλ‹€. μž…λ ₯으둜 μ£Όμ–΄μ§€λŠ” μ‹μ˜ κΈΈμ΄λŠ” 50보닀 μž‘κ±°λ‚˜ κ°™λ‹€.
  • 첫째 쀄에 정닡을 좜λ ₯ν•œλ‹€.

아이디어

  • "-"을 κΈ°μ€€μœΌλ‘œ 식을 κ΅¬λΆ„ν•΄μ„œ 배열에 μ €μž₯ν•˜κ³  첫번째 배열값은 μ•žμ— "-"κ°€ μ—†λŠ” μ‹μ΄λ―€λ‘œ "+"둜 κ΅¬λΆ„ν•œ μˆ«μžλ“€μ„ λͺ¨λ‘ 더해쀀뒀, 결과값에 λ„£λŠ”λ‹€.
  • 그리고 뒀에 식듀은 "-"을 κΈ°μ€€μœΌλ‘œ κ΅¬λΆ„ν•œ 식듀이기에 λͺ¨λ‘ μ•žμ— "-"κ°€ μ˜¨λ‹€.
  • λ”°λΌμ„œ 2번째 식듀 λΆ€ν„°λŠ” "+"둜 κ΅¬λΆ„ν•œ μˆ«μžλ“€μ„ λͺ¨λ‘ 더해쀀뒀, κ²°κ³Όκ°’μ—μ„œ λΉΌμ€€λ‹€.

κ²ͺ은 μ‹œν–‰μ°©μ˜€

  • μ²˜μŒμ— μž…λ ₯값을 λ°›μ•„μ„œ μ–΄λ–»κ²Œ μ²˜λ¦¬ν•΄μ•Όλ˜λ‚˜ λ§Žμ€ 고민을 ν–ˆλ‹€..
  • μ²˜μŒμ— 문제λ₯Ό μ°©κ°ν•΄μ„œ κ΄„ν˜Έλ₯Ό ν•œκ°œλ§Œ μ¨μ•Όλ˜λŠ”μ€„ μ•Œκ³  κ³ λ―Όν–ˆμ—ˆλŠ”λ° μ•„λ‹ˆμ—¬μ„œ "-"λ₯Ό κΈ°μ€€μœΌλ‘œ 식을 λ‚˜λˆ„λ©΄ λ˜κ² λ‹€λŠ” 생각을 ν–ˆλ‹€..!

착각만 μ’€ λΉ λ₯΄κ²Œ κΉ¨λ‹¬μ•˜λ‹€λ©΄ μ’€ 더 빨리 ν’€ μˆ˜λ„ μžˆμ—ˆμ„ κ±° κ°™λ‹€ γ…œγ…œ

μ½”λ“œ

import java.io.*;
import java.lang.reflect.Array;
import java.util.*;

public class BOJ1541 {
    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        // 식을 μž…λ ₯λ°›λŠ” λ³€μˆ˜
        String math = br.readLine();

        // "-"둜 식듀을 ꡬ별
        String no_minus[] = math.split("-");

        // 결과값을 μ €μž₯ν•  λ³€μˆ˜
        int result = 0;

        // "-"둜 κ΅¬λΆ„λœ μ‹λ“€μ˜ 개수만큼 반볡
        for(int i = 0; i < no_minus.length; i++){
            // 처음 뢀뢄은 "-"κ°€ μ•žμ— μ—†μœΌλ―€λ‘œ κ·Έλƒ₯ λ”ν•΄μ€˜λ„ 됨
            if(i == 0){
                // +둜 κ΅¬λΆ„ν•˜μ—¬ 숫자λ₯Ό μ €μž₯ν• λ•Œ, κ·Έλƒ₯ "+"둜 ν•˜λ©΄ μ—λŸ¬κ°€ λ‚˜μ„œ
                // "\\+"둜 μ μ–΄μ€Œ
                String number[] = no_minus[0].split("\\+");
                // μ €μž₯된 μ‹μ—μ„œ μˆ«μžλ“€λ§Œ λ‚¨μ•˜μœΌλ―€λ‘œ
                for(String s : number){
                    int n = Integer.parseInt(s);

                    // κ·Έ μˆ«μžλ“€μ„ λ”ν•΄μ€Œ
                    result = result + n;
                }
            }
            // μ•žμ— "-"κ°€ μžˆλŠ” 식은
            else{
                String number[] = no_minus[i].split("\\+");
                // 값을 더할 λ³€μˆ˜
                int sum = 0;

                // μ €μž₯된 μ‹μ—μ„œ μˆ«μžλ“€λ§Œ λ‚¨μ•˜μœΌλ―€λ‘œ
                for(String s : number){
                    int n = Integer.parseInt(s);

                    // κ·Έ μˆ«μžλ“€μ„ λ”ν•΄μ€Œ
                    sum = sum + n;
                }

                result = result - sum;
            }
        }

        System.out.println(result);
    }
}



'μ•Œκ³ λ¦¬μ¦˜' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Java] BOJ 11279 μ΅œλŒ€ νž™  (0) 2024.08.11
[Java] BOJ 2630 색쒅이 λ§Œλ“€κΈ°  (0) 2024.08.05
[Java] BOJ 1927 μ΅œμ†Œ νž™  (0) 2024.08.01
[Java] BOJ 1260 DFS와 BFS  (0) 2024.08.01
[Java] BOJ 1012 μœ κΈ°λ† λ°°μΆ”  (0) 2024.07.31