Notice
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- sql error [947] [42000]: ora-00947
- unresolved compilation problems
- 티스토리챌린지
- 이클립스형광줄
- ecleemma
- 오블완
- 생성자오버로딩
- 테크톡
- 이클립스로딩지연
- 이클립스로딩
- oracle
- select즐겨찾기
- git
- sql error [936] [42000]: ora-00936
- 다형성
- error페이지 설정
- java크롤링
- sql error [1] [23000]: ora-00001
- 오버로딩
- this()
- Java
- 메모리낭비적은string연산
- 조건위치 효율성
- 이클립스무한로딩
- 우아한테크
- 이클립스느림
- 프로그래머스
- 테이블복사생성
- this
- Sequence
코딩항해기
[코드업] 4833 : 쇠 막대기 (JAVA) 본문

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

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 |