개발지식 먹는 하마 님의 블로그
1541번 - 잃어버린 괄호 본문
✏️ 문제 풀이
이번 문제 풀이는 간단하다.
- -가 등장할 경우, 그 뒤에 등장하는 수를 모두 합해서 뺀다.
괄호를 원하는 위치에 삽입할 수 있기 때문에 -가 등장하면 그 뒤에 등장하는 모든 수를 따로 합해,
전체 합계에서 뺄 수 있다. - Pattern과 Matcher를 사용해 입력받은 문자열을 구분했다.
+와- 또는 숫자인 경우의 앞뒤를 잘랐다.
Pattern p = Pattern.compile("(\\d+|[+-])");
Matcher m = p.matcher(s);
List<String> list = new ArrayList<>();
while(m.find()){
list.add(m.group());
}
🖥️ 코드
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
//문자열을 +-와 한자리 이상인 숫자를 기준으로 자른다.
Pattern p = Pattern.compile("(\\d+|[+-])");
Matcher m = p.matcher(s);
List<String> list = new ArrayList<>();
while(m.find()){
list.add(m.group());
}
int result = 0;
boolean isSub = false; //빼기 여부
for(int i = 0; i < list.size(); i++){
String str = list.get(i);
if(str.equals("-")){
isSub = true;
}
else{
if(!str.equals("+")){
if(isSub){ //-이후에 위치한 값이면 뺀다.
result -= Integer.parseInt(str);
}
else{ //-이전에 위치한 값이면 더한다.
result += Integer.parseInt(str);
}
}
}
}
sc.close();
System.out.println(result);
'coding' 카테고리의 다른 글
프로그래머스 lv2 - 시소 짝꿍 (0) | 2025.03.05 |
---|---|
1316번 - 그룹 단어 체커 (0) | 2025.02.28 |
13305번 - 주유소 (0) | 2025.02.26 |
1931번 - 회의실 배정 (0) | 2025.02.25 |
1992번 - 쿼드트리 (0) | 2025.02.24 |