[소프티어] Yeah, but How? 레벨2 자바 풀이 (한양대 HCPC 2023)
https://www.acmicpc.net/problem/30884
https://softeer.ai/practice/9498
Softeer - 현대자동차그룹 SW인재확보플랫폼
softeer.ai
위 두개가 같은 문제다.
출제 플랫폼만 다를 뿐.
같은 소스를 제출하니 둘다 정답이 나왔다.
참가자가 몇명 안된다. 5명이면 손가락 꼽는건가 싶다
따끈한 문제인지 구글링도 잘 안되고 내가 정리해야겠더라
문제 스펙은 아래와 같다.
1. 수학적 개념이 재밌다.
2. 줄바꿈 함정이 발생할 수 있다. StringBuilder를 쓰면 안그러던데 BufferedWriter는 줄바꿈을 해줘야했다
위 이슈로 티스토리에 정리하여 업로드하게되었다.
코드부터 보자.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// int n = Integer.parseInt(br.readLine());
String s = br.readLine();
// 1차 고민
// char c[] = new char[s.length()+1];
// for(int i=0; i<s.length(); i++){
// c[i] = s.charAt(i);
// }
// for(int i=0; i<s.length(); i++){
// t.push(s.charAt(i));
// }
// 2차 고민
// s = s.replace("()", "(1)");
// System.out.println(s);
// s = s.replace(")(", "+");
// System.out.println(s);
// 3차 고민
for(int i=0; i<s.length()-1; i++){
bw.write(s.charAt(i));
if(s.charAt(i)=='(' && s.charAt(i+1)==')'){
bw.write("1");
}
if(s.charAt(i)==')' && s.charAt(i+1)=='('){
bw.write("+");
}
}
bw.write(s.charAt(s.length()-1));
bw.newLine();
// List<Integer> list = Arrays.asList(m2);
// int dap = Collections.frequency(list, min);
// bw.write(String.valueOf(dap));
bw.close();
}
}
주석 부분을 보면 고민을 꽤나 했다.
사실 백지에서부터 정답을 맞췄다면 거짓말이다.
힌트가 있었어도 100점까지의 길은 험난했다.
줄바꿈 이슈가 없었던 코드도 첨부.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.next();
int len = s.length();
StringBuilder result = new StringBuilder();
for (int i = 0; i < len - 1; i++) {
result.append(s.charAt(i));
if (s.charAt(i) == '(' && s.charAt(i + 1) == ')')
result.append('1');
if (s.charAt(i) == ')' && s.charAt(i + 1) == '(')
result.append('+');
}
result.append(s.charAt(len - 1));
System.out.println(result.toString());
}
}
일단
1. 코드적 접근
문제를 보면 " 그중 아무거나 하나를 출력한다." 라고 되어있다.
소프티어 테케가 맞지 않아도, 제출시 정답이 될 수 있다.
그런데도 계속된 0점.
마지막 부분에
bw.newLine();
를 추가하니 귀신처럼 100점이 나왔다.
2. 수학적 접근
간단한 참조글 : https://velog.io/@jihwan0319/Yeah-but-How-%EB%B0%B1%EC%A4%80-30884
Yeah, but How? (백준 30884)
안녕하세요. 오늘은 덧셈식을 만들 거예요. 문제 https://www.acmicpc.net/problem/30884 아이디어 일단 열린괄호, 닫힌괄호가 연속적으로 있는것은 전혀 상관이 없습니다. 그러므로 ()이랑 )(만 처리해주면
velog.io
상세한 참조글 ( 2023 HCPC Official Solutions ) : https://u.acmicpc.net/e98182a0-15b3-4a42-bfae-37c4c3b2beb0/Editorial-HCPC-2023.pdf
최초 성공 유저는 4분만에....
'알고리즘 단련장 > 소프티어' 카테고리의 다른 글
[소프티어] 진정한 효도 자바 풀이 레벨2 단순 구현 (0) | 2024.07.18 |
---|---|
[소프티어] 장애물 인식 프로그램 dfs 자바 풀이 레벨2 (0) | 2024.07.18 |
[소프티어] 레벨1 문제 유형 전체적인 난이도 후기 (올솔 후기) (0) | 2024.07.18 |
[소프티어] 위험한 효도 레벨1 자바 풀이 (1) | 2024.07.17 |
[소프티어] 연탄 배달의 시작 레벨1 자바 풀이 (0) | 2024.07.17 |