gkdlmc77   7년 전

한 줄을 입력 받아 line에 저장합니다.

그리고 ()를 발견하면 *으로 바꾸어, nline에 저장합니다.


예제 입력1의 경우

line = ()(((()())(())()))(())
nline = *(((**)(*)*))(*)

으로 저장합니다.


그러면 괄호 한 쌍 () 사이에 있는 *의 개수가 레이저로 자른 횟수가 됩니다.

예컨대, (**)이라면 하나의 쇠막대가 2번 잘린 것이므로,

잘린 쇠막대의 개수는 2+1개가 됩니다.


그리고 계산이 끝난 쇠막대는 string에서 삭제합니다.


다시 예를 들면,

((***)*) 라는 입력이 주어졌습니다.

(***)에서 안쪽 작은 쇠막대가 3번 잘리므로 3+1=4조각으로 나뉩니다.

그리고 안쪽 작은 쇠막대는 계산이 끝났으므로

(****)이 남습니다.

그럼 이 큰 쇠막대는 4번 잘리므로 4+1=5조각으로 나뉩니다.


따라서 총 잘린 쇠막대의 갯수는 4+5로 9개 입니다.



예제 입력으로 표현하면 다음과 같습니다.

*(((**)(*)*))(*)   
왼쪽 기준으로 가장 안쪽 쇠막대는 (**)입니다. 따라서 2+1 조각으로 나눠졌습니다. 
total = 3
계산이 끝난 쇠막대는 삭제합니다.
*((**(*)*))(*)
왼쪽 기준으로 가장 안쪽 쇠막대는 (*)입니다. 따라서 1+1 조각으로 나눠졌습니다. 
total = 3 + 2
계산이 끝난 쇠막대는 삭제합니다
*((****))(*)
왼쪽 기준으로 가장 안쪽 쇠막대는 (****)입니다. 따라서 4+1 조각으로 나눠졌습니다.
total = 3 + 2 + 5
계산이 끝난 쇠막대는 삭제합니다.
*(****)(*)
왼쪽 기준으로 가장 안쪽 쇠막대는 (****)입니다. 따라서 4+1조각으로 나눠졌습니다.
total = 3 + 2 + 5 + 5
계산이 끝난 쇠막대는 삭제합니다.
*****(*)
왼쪽 기준으로 가장 안쪽 쇠막대는 (*)입니다. 따라서 1+1조각으로 나눠졌습니다.
total = 3 + 2 + 5 + 5 + 2
계산이 끝난 쇠막대는 삭제합니다.
******
더 이상 쇠막대는 없으므로 for문이 종료됩니다.
최종적으로 total = 3 + 2 + 5 + 5 + 2 = 17입니다.
예제 출력과 동일합니다.


예제 입력 2의 경우에도 동일하게 계산하여 예제 출력 24와 같은 결과가 나옵니다.

예제2.JPG


어디서 잘못되어 틀렸다고 나오는 걸까요?

koosaga   7년 전

((())) 로 테스트해보세요.

gkdlmc77   7년 전

((())) 로 테스트하면 4가 나옵니다.

4가 맞지 않나요??

4조각.jpg4조각2.JPG

koosaga   7년 전

제 컴퓨터에서는 2가 나옵니다.


koosaga   7년 전

스크린샷 2016-12-08 오후 10.58.39.png

gkdlmc77   7년 전

for문 돌면서 ++i 수행하는 게 환경마다 다르게 나오는 것 같네요. 감사합니다..

다른 컴파일러로 확인해 볼게요.

gkdlmc77   7년 전

제가 컴퓨터에서 쓴 코드랑 여기 제출한 코드랑 미묘하게 달랐네요!

컴파일러 환경이 달라서 다르게 나온게 아니에요~

제가 그냥 잘못된 코드를 여기다 올린거에요~

감사합니다.

toto   6년 전

 

koosaga님, ((())) 이 테스트케이스 답이 4가 맞지 않나요?

2가 아닌 것 같은데..

koosaga   6년 전

저는 답이 2라고 한 적이 없습니다. 

댓글을 작성하려면 로그인해야 합니다.