Koder / 박성훈
article thumbnail

무난하게 풀었다.

 

https://www.acmicpc.net/problem/10799

 

10799번: 쇠막대기

여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저

www.acmicpc.net

쇠막대기를 레이저로 자를때, 앞에서 센 '(' 의 개수 = 쇠막대기의 수 만큼 기존 막대기가 분리가 되며,

')'를 통해 쇠막대기가 끝남을 알릴때도

잘린곳 - 쇠막대기의 끝 으로 이어지는 쇠막대기가 하나 더 생기기 때문에 이부분만 잘 처리해주면 AC가 나온다.

 

#include <stdio.h>
#include <string.h>

char input[123456] = {0};

int main(){
	int ans=0;
	int sum=0;
	scanf("%s", input);
	int len = strlen(input);
	for(int i=0; i<len; i++){
		if(input[i] == '(' && input[i+1] == ')'){ ans += sum; i++; }
		else if(input[i] == '('){ sum++; }
		else if(input[i] == ')'){ sum--; ans++; }
	}
	printf("%d", ans);
	return 0;
}

풀이가 깔끔해서 마음에 드는 문제.

반응형