티스토리 뷰
생각
레이저는 '()'로 주어지고 쇠막대기의 시작은 '(' 끝은 ')'로 주어진다. 이 때 레이저로 총 몇 마디의 쇠막대기로 잘리는지 출력하여라.
처음 생각
문자열로 입력이 주어지므로 문자열을 받아 하나씩 확인을 해보아야 한다.
다음 생각
쇠막대기와 레이저 둘 다 시작이 '(' 이므로 해당 index의 다음 번호까지 확인하여 레이저인지 판별해준다. 쇠막대기일 경우 해당 변수 n을 증가시켜주고 레이저일 경우 결과 변수 result를 n만큼 더해준다.
다다음 생각
쇠막대기가 끝나는 ')'일 경우 쇠막대기 변수 n을 -1 시켜주고, 끄트머리가 남으므로 result 변수를 +1 시켜준다.
방안
1) 쇠막대기가 끝나는 부분도 1마디가 되므로 +1을 주의하여야 한다.
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 33 34 35 36 37 38 39 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; class Solution { static int n,m; public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int tc = Integer.parseInt(br.readLine()); StringBuilder sb = new StringBuilder(); for(int i=1;i<=tc;i++) { String t = br.readLine(); int result = 0; int n = 0; for(int j=0;j<t.length()-1;j++) { switch(t.charAt(j)) { case '(': // 막대기일 경우 if(t.charAt(j+1)!=')') { n++; // 레이저일 경우 }else { result += n; j++; } break; case ')': result++; n--; break; } } result+=n; sb.append("#"+i+" "+result+"\n"); } System.out.print(sb); } } | cs |
'알고리즘 > SW Expert' 카테고리의 다른 글
[SW Expert] 4013. [모의 SW 역량테스트] 특이한 자석 (0) | 2018.09.16 |
---|---|
[SW Expert] 4014. [모의 SW 역량테스트] 활주로 건설 (0) | 2018.09.16 |
[SW Expert] 5521. 상원이의 생일파티 (0) | 2018.09.06 |
[SW Expert] 1953. [모의 SW 역량테스트] 탈주범 검거 (0) | 2018.09.03 |
[SW Expert] 1949. [모의 SW 역량테스트] 등산로 조성 (0) | 2018.09.02 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday