코딩항해기
[코드업] 4833 : 쇠 막대기 (JAVA) 본문
import java.util.ArrayList;
import java.util.Scanner;
public class test3 {
public static void main(String[] args) {
//(는 층을 쌓기 때문에 스택을 올린다
//()는 레이저이므로 스택 쌓은만큼 수가 추가된다
//)끝나는 것이므로 스택을 하나 내리면서 수를 1추가한다
//String[] arr = {"(",")","(","(","(","(",")","(",")",")","(","(",")",")","(",")",")",")","(","(",")",")"};
Scanner sc = new Scanner(System.in);
ArrayList<String> list = new ArrayList<>(); //입력값을 저장할 공간
int stack = 0; //층수를 계산할 스택 변수
int sum = 0; //막대 개수 연산할 변수
while (true){
System.out.print("0을 입력하면 입력을 종료합니다. : ");
String res = sc.next();
//종료조건
if(res.equals("0")){
break;
}
//종료가 아니라면 입력 저장
list.add(res);
}
long startTime = System.currentTimeMillis(); // 시작 시간 저장
for(int i=0; i<list.size(); i++) {
if(list.get(i).equals("(")) { //(만 있을 수 없으므로 배열초과 trycatch생략
//만약 (인데 다음이 )아니라면 => 레이저가 아님
//만약 (인데 다음이 )이라면 => 레이저임
if(list.get(i+1).equals(")")) {
System.out.println("레이저 핑-!");
//레이저
sum += stack; //쌓인 막대 개수만큼 개수 추가
i++; //레이저용 닫기 패스
}
else {
//레이저가 아닌 층 쌓기
System.out.println("막대기 추가");
stack++; //층 추가
}
}
else if(list.get(i).equals(")")) {
System.out.println("막대기 끝부분");
//만약 막대 끝이라면
//스택을 하나 빼고 개수를 하나 추가
stack--;
sum++;
}
//() 둘다 아니라면 아무것도 하지 않음
System.out.println("현재 막대기 층 : "+stack);
}
System.out.println("--------------------------------");
System.out.println("총 막대 개수는 : "+sum+"개 입니다.");
long endTime = System.currentTimeMillis(); // 종료 시간 저장
System.out.println("실행시간: " + (endTime - startTime) + "ms"); // 밀리초 단위로 출력
}
}
'problem solving > 코딩 테스트' 카테고리의 다른 글
[프로그래머스] 로그인 성공? 문제 (JAVA, Python) (2) | 2024.11.23 |
---|---|
[프로그래머스] JAVA, Python으로 문제풀이 (0) | 2024.11.22 |
[프로그래머스] PCCE 기출문제 1~9번 (0) | 2024.10.05 |
[프로그래머스/JAVA] [PCCE 기출문제] 1번~8번 (0) | 2024.07.06 |
[프로그래머스/JAVA] 가장 많이 받은 선물 (1) | 2024.07.05 |