Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- jpa
- ObjectOptimisticLockingFailureException 처리
- RefreshToken
- netty
- springsecurity
- AccessToken
- aop
- multimodule testcontainers
- Spring Cloud Gateway
- 알고리즘
- Invalid property 'principal.username' of bean class
- spring DI
- kotest testcontainers
- 멀티모듈 테스트컨테이너
- redissonlock aop
- 형상관리
- DI
- ObjectOptimisticLockingFailureException
- @transactional
- 낙관적 락 재시도
- OptimisticLock
- TestContainers
- spring aop
- 백준
- 우아한 테크러닝
- 소수찾기 java
- S3
- java
- 낙관적 락 롤백
- interface
Archives
- Today
- Total
조급하면 모래성이 될뿐
[프로그래머스]쇠막대기 본문
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42585
코드
package Programmers.Level2;
public class IronBar {
public static void main(String[] args) {
String arrangement = "()(((()())(())()))(())";
int answer = solution(arrangement);
System.out.println(answer);
}//main
public static int solution(String arrangement) {
int answer = 0;
// 먼저 레이저를 구분해 준다.
arrangement = arrangement.replace("()", "U");
// 대상을 처리하면서 막대기 갯수를 세어준다.
int pipe = 0 ;
char[] pipes = arrangement.toCharArray();
for ( int i = 0 ; i < pipes.length; i++ ) {
if ( pipes[i] == '(' ) pipe++; // pipe의 갯수를 새준다.
else if ( pipes[i] == ')') { // 닫혔을때는 pipe 하나 빼주고, 잘린거 추가해준다.
pipe--;
answer++;
}else if ( pipes[i] == 'U' ) { // 레이저인경우 pipe개수만큼 출력해준다.
answer += pipe;
}
}
return answer;
}
}//class
후기
문제를 어떻게 코드로 풀어나가느냐가 관건이였던 문제인것같다....
너무어렵게만 생각해서 떠올려내지 못했다.. 핵심은 레이저 이전의 '(' 를 잘린 막대기 개수로 보는 것 이다.
그리고 ')'까지가 막대기의 끝이다. 고로 ')'도 하나의 막대기 파편이 된다.
')'를 만나게되면 하나의 막대기는 이후에 레이저를 만나도 잘리지 않으므로, 세고있던 막대기 갯수를 하나 빼준다.
'('를 막대기 갯수로 세야한다는 생각을 하지못했다.. 아직도 더 많은 문제들을 풀면서 사고력을 높여가야겠다..
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스]큰 수 만들기 (0) | 2019.11.06 |
---|---|
[프로그래머스] 기능개발 (0) | 2019.11.05 |
[프로그래머스] 124 나라의 숫자 (0) | 2019.11.05 |
[프로그래머스]다리를 지나는 트럭 (0) | 2019.11.04 |
[프로그래머스]주식가격 (0) | 2019.10.30 |