백준 스카이라인(1863번)

2022. 8. 30. 00:12· 코딩테스트

알고리즘

높이가 0인 건물이 들어온다면 스택을 초기화 함

현재 건물보다 낮은 건물이 들어온다면 입력받은 건물의 높이보다 큰 건물을 pop함

현재 건물보다 높이가 크다면 카운트 증가함

건물의 높이가 같다면 continue로 입력받은 건물을 스택에 넣지 않음

스택이 비어있다면 카운트 증가 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
import java.util.StringTokenizer;

public class Main {
	
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int num = Integer.parseInt(br.readLine());	
		Stack<Integer> s = new Stack<Integer>();
		StringTokenizer st;
		int number,height; 
		int count=0;
		for (int i =1; i<= num; i++) {	
			st = new StringTokenizer(br.readLine());
			number = Integer.parseInt(st.nextToken());	
			height = Integer.parseInt(st.nextToken());	
			if(height == 0) {	// 건물의 높이가 0이라면 
				s.clear();	// 스택 초기화
			}else {	// 건물의 높이가 0이 아니라면
				while(!s.empty() && s.peek()>height) {	// 현재 건물보다 입력 받은 건물이 낮을시 
					s.pop();	//입력 받은 건물 보다 큰 건물 제외
				}
				if(!s.empty() &&s.peek()<height) {	// 현재 건물보다 입력받은 건물이 높을시
					count++;	// 카운트 증가
				}
				if(!s.empty() &&s.peek() == height) {	// 건물의 높이가 같을시
					continue;	//높이가 같다면 같은 건물 취급으로 스택에 넣지 않음
				}
				if(s.empty()) {	// 스택이 비어있다면
					count++;	//카운트 증가
				}
				s.push(height);	//건물의 높이를 스택에 넣기
			}
		}
		System.out.println(count);	//총 건물의 카운트 출력
	}
}

'코딩테스트' 카테고리의 다른 글

백준 카드 정렬하기(1715번)  (0) 2022.08.31
백준 현욱은 괄호왕이야!!(15926번)  (0) 2022.08.30
백준 탑(2493번)  (0) 2022.08.29
백준 옥상 정원 꾸미기(6198번)  (0) 2022.08.29
백준 크게 만들기(2812번)  (0) 2022.08.29
'코딩테스트' 카테고리의 다른 글
  • 백준 카드 정렬하기(1715번)
  • 백준 현욱은 괄호왕이야!!(15926번)
  • 백준 탑(2493번)
  • 백준 옥상 정원 꾸미기(6198번)
코드 죄수
코드 죄수
코드 죄수
코드 탈출기
코드 죄수
전체
오늘
어제
  • 분류 전체보기 (126)
    • 스프링 부트 (5)
    • 스프링 (13)
    • 웹 (18)
    • 데이터베이스 (7)
    • 코딩테스트 (25)
    • 자바 (20)
    • 플라스크 (9)
    • react, react-native (11)
    • 기타 설정 (15)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
코드 죄수
백준 스카이라인(1863번)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.