sanhaa
sanha story
sanhaa
전체 방문자
오늘
어제
  • 분류 전체보기 (93)
    • 일상 (3)
    • Programming (42)
      • Back-end Language (32)
      • Front-end Language (8)
      • Database Language (2)
    • Etc. (35)
      • Coding Test (23)
      • Algorithm (7)
      • Data structure (1)
      • IDE (1)
      • Job Preparation (3)
    • Project (3)
    • Engineer Information Proces.. (10)
    • secret space (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • JAVA #백준 #구간합
  • 코딩테스트
  • oEmebed
  • JAVA 구간 합 구하기
  • 정처기 #DCL #SQL #DB
  • connection reset by peer
  • 연속된 자연수의 합 구하기
  • 백준
  • 시간복잡도 #JAVA #코딩테스트
  • DML #정처기 #시나공 #SQL #MYSQL #SPRING #JAVA
  • 주몽의명령
  • 삼발자 #일상
  • Java
  • 큐
  • 프로그래머스
  • Spring
  • 1253번
  • hash #java #프로그래머스 #코딩테세트 #백준
  • 투 포인트 알고리즘
  • DDL #SQL #DB #정보처리기사 #SQL응용 #MySQL
  • DFS #백준
  • 자바
  • 사이드 프로젝트 #여기로모여라 #web socket #실시간 위치공유
  • iterator #
  • 신고받기
  • 알고리즘
  • 스택
  • spring #java #k6 #
  • 정보처리기사 #정처기 #기출 #2021기출
  • 백준 2018번

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
sanhaa

sanha story

[백준] 1541번 잃어버린 괄호
Etc./Coding Test

[백준] 1541번 잃어버린 괄호

2022. 6. 26. 01:09

문제설명

더보기

문제

세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.

그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.

괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.

 

입력

첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 많이 연속되는 숫자는 없다. 수는 0으로 시작할 수 있다. 입력으로 주어지는 식의 길이는 50보다 작거나 같다.

 

출력

첫째 줄에 정답을 출력한다.

 

예제 입력 1 

55-50+40

예제 출력 1 

-35

예제 입력 2 

10+20+30+40

예제 출력 2 

100

예제 입력 3 

00009-00009

예제 출력 3 

0

문제풀이

그리드알고리즘으로 해결했다.

가장 중요한 포인트는 "-"으로 시작하는 값에서 "-"로 끝나는 값의 전 까지 괄호로 묶어서 더해야 가장 작은 값이다. 

package doit_java;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;

public class doit_36_최솟값을만드는괄호배치찾기 {
    public static void main(String[] args)throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        String input = st.nextToken();
        String[] split = input.split("-");
        String[] plusSplit = split[0].split("\\+");
        int plus=0;
        int minus=0;
        for (String s : plusSplit) {
            plus += Integer.parseInt(s);
        }
        for(int i=1; i< split.length; i++){
            String[] minusSplit = split[i].split("\\+");
            for (String s : minusSplit) {
                minus += Integer.parseInt(s);
            }
        }
        int answer = plus+(minus*-1);

//100-40+50+74-30+29-45+43+11

        System.out.println("end");

    }
}

 

1. split를 이용하여 ("-")를 기준으로 분리한다.

2. 인덱스 0은 무조건 +인 값이다. 따라서 0인덱스 값을 또 다시 "+"로 나누고 int형으로 바꿔서 더한다.

3. 나머지 인덱스는 전부 괄호 안에 있는 값이다. 따라서 똑같이 "+"로 나누고 더하고 -1를 곱한다.

 

저작자표시 비영리 변경금지 (새창열림)

'Etc. > Coding Test' 카테고리의 다른 글

[프로그래머스] 신고결과받기(카카오) JAVA풀이  (0) 2022.07.04
[백준] 1934번 최소 공배수 구하기  (0) 2022.06.28
[백준] 13023번 ABCDE  (1) 2022.06.16
[백준] 별 찍기 정리  (2) 2022.06.16
[백준] 2023번 신기한 소수 찾기  (2) 2022.06.15
    'Etc./Coding Test' 카테고리의 다른 글
    • [프로그래머스] 신고결과받기(카카오) JAVA풀이
    • [백준] 1934번 최소 공배수 구하기
    • [백준] 13023번 ABCDE
    • [백준] 별 찍기 정리
    sanhaa
    sanhaa
    sanha history book

    티스토리툴바