Notice
Recent Posts
Recent Comments
Link
DY의 세상구경
실력키우기 그릇(JAVA) 본문
2604 : 그릇
제한시간: 1Sec 메모리제한: 0mb
해결횟수: 1281회 시도횟수: 2257회
그릇을 바닥에 놓았을 때 그 높이는 10cm 이다. 그런데 두 개의 그릇을 같은 방향으로 포개면 그 높이는 5cm만 증가된다. 만일 그릇이 서로 반대방향으로 쌓이면 높이는 그릇만큼, 즉 10cm 늘어난다. 그릇을 괄호 기호로 나타내어 설명해보자. 편의상 그릇이 쌓여지는 방향은 왼쪽에서 오른쪽이라고 가정한다. 그림에서 ‘(’은 그릇이 바닥에 바로 놓인 상태를 나타내며, ‘)’은 그릇이 거꾸로 놓인 상태를 나타낸다.
만일 그릇이 포개진 모양이 아래 그림 1(a)와 같다면 전체의 높이는 25cm가 된다. 왜냐하면 처음 바닥에 있는 그릇의 높이가 10cm이고 이후 같은 방향으로 3개의 그릇이 포개져 있으므로 늘어난 높이는 5+5+5=15 이기 때문이다. 그림 1(b)와 같은 경우라면 그 높이는 10*4=40cm가 된다.
여러분은 입력파일에 주어진 모양대로 그릇을 쌓을 때 최종의 전체 그릇 높이를 계산해서 출력해야 한다. 즉 처음 입력으로 주어진 각 그릇의 방향은 바꿀 수 없다.
![]() (((( | ![]() 25 |
![]() ()()()))( | ![]() 80 |
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 | /************************************************************** Problem: 2604 User: a132034 Language: Java Result: Success Time:174 ms Memory:9188 kb ****************************************************************/ import java.util.Scanner; public class Main { @SuppressWarnings ( "resource" ) public static void main(String[] args) { Scanner sc = new Scanner(System.in); int res = 0 ; String in; in = sc.next(); char [] input = in.toCharArray(); char pre = ' ' ; for ( int i = 0 ; i < in.length(); ++i) { if (pre == input[i]) { res += 5 ; } else { res += 10 ; } pre = input[i]; } System.out.println(res); } } |
설명은 많지만 사실 알고보면 간단한 문제.
이전과 같은 방향이면 +5 다른 방향이면 +10
처음에는 무조건 10만큼 늘어나기 때문에 pre변수(이전 그릇의 모양을 저장하는 변수)를 (도 )도 아닌 빈칸으로 두어 무조건 +10이 되도록 함.
'IT > ALGORITHM' 카테고리의 다른 글
실력키우기 소수구하기(C++) (0) | 2016.04.10 |
---|---|
실력키우기 각 자릿수의 합(C++) (0) | 2016.04.07 |
실력키우기 윤년(C) (0) | 2016.04.06 |
실력키우기 이진수(C++) (0) | 2016.04.05 |
실력키우기 2진수를 10진수로(JAVA) (0) | 2016.04.04 |