문제
교재 풀이
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 |