반응형
🔺 문제
1541번: 잃어버린 괄호
첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다
www.acmicpc.net
🔺 코드
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = br.readLine().split("-");
int answer = 0;
for(int i = 0 ; i < str.length ; i++) {
int tmp = mySum(str[i]);
// 가장 앞에 있는 값만 더함
if(i == 0) {
answer += tmp;
}
// 뒷부분은 더한 값들을 뺌
else {
answer -= tmp;
}
}
System.out.println(answer);
}
// 현재 String에 있는 수를 모두 더하는 함수
static int mySum(String a) {
int sum = 0;
String[] s = a.split("[+]");
for(int i = 0 ; i < s.length ; i++) {
sum += Integer.parseInt(s[i]);
}
return sum;
}
}
✅ 해결 아이디어
✔ 그리디
- 최솟값 만들기 위해 가능한 한 큰 수 빼기 → 덧셈 부분 먼저 계산
1) 더하기 연산 먼저 수행
2) 가장 앞에 있는 값에서 더하기 연산으로 나온 결괏값들 모두 빼기
🔺 다른 풀이들
- StringTokenizer()
를 활용한 풀이도 있당
[백준] 1541번 : 잃어버린 괄호 - JAVA [자바]
www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개
st-lab.tistory.com
💬 느낀 점
정규식에서 왜 .split("+")
로 하면 안 되지? 했는데
이런 이유 때문이라 함
그래서 ("\\+")
나 ("[+]")
이렇게 해주면 된당
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V | 6.19 |
(+6.19 2회독)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = br.readLine().split("-");
int total = 0;
for(int i = 0 ; i < str.length ; i++) {
int tmp = mySum(str[i]);
if(i == 0) total += tmp; // 가장 앞에 있는 값만 더함
else total -= tmp; // 뒷부분은 더한 값들을 뺌
}
System.out.println(total);
}
// 현재 String에 있는 를
static int mySum(String s) {
int sum = 0;
String[] st = s.split("[+]");
for(int i = 0 ; i < st.length ; i++) {
sum += Integer.parseInt(st[i]);
}
return sum;
}
}
|
cs |
(참고)
✔ 자바 정규식 사용법
☕ 자바 정규식(Regular Expression) 사용법 💯 정리
정규표현식 이란 정규표현식(Regular Expression)이란 문자열 데이터 중에서 원하는 조건(패턴)과 일치하는 문자열 부분을 찾아내기 위해 사용하는 것으로, 미리 정의된 기호와 문자를 이용해서 작성
inpa.tistory.com
반응형
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 1456번: 거의 소수 (0) | 2023.04.25 |
---|---|
[백준/JAVA] 1929번: 소수 구하기 (0) | 2023.04.25 |
[백준/JAVA] 1931번: 회의실 배정 (0) | 2023.04.24 |
[백준/JAVA] 1744번: 수 묶기 (0) | 2023.04.24 |
[백준/JAVA] 1715번: 카드 정렬하기 (0) | 2023.04.24 |