알고리즘/JA

1809 : 탑

  • -
반응형

http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1082&sca=50&sfl=wr_hit&stx=1809&sop=and

 

JUNGOL | 탑 > 문제은행

제한시간: 1000 ms    메모리제한: 32 MB 해결횟수: 1866 회    시도횟수: 7872 회    KOI 통신연구소는 레이저를 이용한 새로운 비밀 통신 시스템 개발을 위한 실험을 하고 있다.  실험을 위하여 일직선 위에 N개의 높이가 서로 다른 탑을 수평 직선의 왼쪽부터 오른쪽 방향으로 차례로 세우고,  각 탑의 꼭대기에 레이저 송신기를 설치하였다. 모든 탑의 레이저 송신기는 레이저 신호를 지표면과 평행하게 수평 직선의 왼쪽 방향으로 발사하고

www.jungol.co.kr

카테고리는 stack이라고 되어있으나 list가 훨씬 빠른 속도를 보여줌

요소들 모두를 계속 리스트에서 관리하면 거의 당연히 시간 초과가 발생한다.  새로운 타워가 들어올 때 기존 타워가 더 작다면 의미없으므로 지워버린다.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

public class Main_list {

	// TODO: http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=1082&sca=50&sfl=wr_hit&stx=1809&sop=and
	static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	static StringBuilder sb = new StringBuilder();
	static StringTokenizer tokens;
	static int N;

	public static void main(String[] args) throws IOException {
		br = new BufferedReader(new StringReader(src));
		N = Integer.parseInt(br.readLine());

		List<Tower> towers = new ArrayList<>();
		towers.add(new Tower(0, 100000000));       // 기준 타워
		tokens = new StringTokenizer(br.readLine());
		for (int i = 1; i <= N; i++) {
			Tower tower = new Tower(i, Integer.valueOf(tokens.nextToken()));
			for(int j=towers.size()-1; j>=0; j--) {
				Tower prevTower = towers.get(j);
				if(prevTower.height> tower.height) {
					sb.append(prevTower.idx).append(" ");
					break;
				}else {
					towers.remove(prevTower);
				}
			}
			towers.add(tower);
		}
		System.out.println(sb);

	}

	static class Tower {
		int idx;
		int height;

		public Tower(int idx, int height) {
			super();
			this.idx = idx;
			this.height = height;
		}
	}

	static String src = "5\r\n" +
			"6 9 5 7 4";
}
반응형

'알고리즘 > JA' 카테고리의 다른 글

1127 : 맛있는 음식(PERKET)  (0) 2019.08.15
1733 : 오목  (0) 2019.08.08
1681 : 해밀턴 순환회로  (0) 2019.07.28
[솔루션]정올 1810 백설공주  (0) 2019.07.23
[솔루션]정올 1169 주사위 던지기 1  (0) 2018.10.22
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.