본문 바로가기
CODING TEST/BOJ

[java] 문제 036 (백준 1541)

by 정성인(人) 2024. 6. 19.

문제

잃어버린 괄호

 

교재 풀이

import java.util.Scanner;
public class P1541_잃어버린괄호 {
  static int answer = 0;
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String example = sc.nextLine();
    String[] str = example.split("-");
    for (int i = 0; i < str.length; i++) {
      int temp = mySum(str[i]);
      if (i == 0)
        answer = answer + temp; // 제일 앞에 것만 더해주고
      else
        answer = answer - temp; // 뒤에 부분은 더한 값들을 빼줌
    }
    System.out.println(answer);
  }
  static int mySum(String a) { // 나눠진 그룹의 더하기 연산 수행 함수
    int sum = 0;
    String temp[] = a.split("[+]");
    for (int i = 0; i < temp.length; i++) {
      sum += Integer.parseInt(temp[i]);
    }
    return sum;
  }
}

 

내 풀이) 24.6.19에 풀고 맞았음

import java.util.*;
import java.io.*;

public class Main
{
	public static void main(String[] args) throws IOException{
	    Scanner sc=new Scanner(System.in);
	    String str=sc.nextLine();
	    
	    String[] a=str.split("-");
	    
	    for(int i=0;i<a.length;i++){
	        String[] temp;
	        int sum=0;
	        
	        temp=a[i].split("[+]");
	        for(int j=0;j<temp.length;j++){
	            int now=Integer.parseInt(temp[j]);
	            sum+=now;
	        }
	        
	        a[i]=Integer.toString(sum);
	    }
	    
	    int[] nums=new int[a.length];
	    for(int i=0;i<a.length;i++){
	        nums[i]=Integer.parseInt(a[i]);
	    }
	    
	    int start=nums[0];
	    int ans=start;
	    for(int i=1;i<a.length;i++){
	        ans-=nums[i];
	    }
	    
	    System.out.println(ans);
	}
}

슈도코드

식을 입력받음

어떻게? sc로 

입력받은 식을 str string 변수에 넣기 

split(-) 이용한 부분

str.split(-)해서 받은 문자열 배열을 a로 받아 

그럼 {”43”, “13+45”} 이런 식으로 되어 있을 거임 

split(+)를 이용한 부분

for문 돌면서, a.length만큼 

split(+)를 적용시킴, a[i]에

그럼 예로 {”13”, ”43”} 이런  식으로 되었을 거임

그럼 이를 숫자로 변환해 ⇒ 다시 각각 for문 돌면서 parseInt해주고 

이를 더한 값을 a[i]에 업데이트해

a의 첫 원소는 빼놔 ⇒ start 변수에 담기

출력할 ans 변수를 만들어 놓고 초기화는 start값으로

그리고 for i=1부터 쭉

ans 값에서 계속 a[i] 값을 빼는 거야

그렇게 처리를 완료 후엔 ans를 출력하는 거지

 

설명

24.6.19 내 풀이를 다듬고 정리하면 교재 풀이가 됨. 로직은 똑같음

 

'CODING TEST > BOJ' 카테고리의 다른 글

[java] 문제 038 (백준 1456)  (0) 2024.06.20
[java] 문제 037 (백준 1929)  (0) 2024.06.19
[java] 문제 035 (백준 1931)  (0) 2024.06.19
[java] 문제 034 (백준 1744)  (0) 2024.06.18
[java] 문제 033 (백준 1715)  (0) 2024.06.18