[백준] 12789번: 도키도키 간식드리미 - Kotlin[코틀린]

2024. 1. 16. 21:17·알고리즘/Baekjoon

문제

 

 

12789번: 도키도키 간식드리미

인하대학교 학생회에서는 중간, 기말고사 때마다 시험 공부에 지친 학우들을 위해 간식을 나눠주는 간식 드리미 행사를 실시한다. 승환이는 시험 기간이 될 때마다 간식을 받을 생각에 두근두

www.acmicpc.net

 


풀이

 

 대기열의 왼쪽에 있는 공간을 스택으로 생각하여 풀이하면 된다. 스택은 선입후출 구조이므로 왼쪽 공간에 먼저 들어간 번호는 나중에 나온다.

 

 현재 도시락을 받을 번호를 나타내는 변수 cur을 1로 초기화하고 선언한다. 입력받은 대기열을 앞에서부터 순회하면서 cur과 같은 번호를 만나면 도시락을 받은 것으로 처리하고, cur을 1 증가시켜서 다음으로 받을 사람을 나타낸다. 만약 cur과 다른 번호를 만난 경우에는 스택에 추가한다. 이 때, 현재 스택에서 가장 앞에 있는 번호가 cur인 경우에는 스택을 비워주면 된다.

 

 대기열이 끝나면 현재 스택에 남아있는 사람들을 처리한다. 만약 cur과 다른 번호를 만난 경우에는 도시락을 나눠줄수 없기 때문에 종료한다.

 

 스택에 아무것도 남아있지않다면 모든 사람이 도시락을 받을 수 있는 것이기 때문에 "Nice"를 출력하고 아니라면 "Sad"를 출력한다.

 


코드

 

import java.util.*

fun main() {
    val br = System.`in`.bufferedReader()
    val bw = System.out.bufferedWriter()

    val num = br.readLine().toInt()
    val stack = Stack<Int>()

    var cur = 1
    br.readLine().split(' ').map { it.toInt() }.forEach {
        if(it == cur) cur++
        else {
            while (stack.isNotEmpty()) {
                if(stack.peek() == cur) {
                    stack.pop()
                    cur++
                }
                else break
            }
            stack.push(it)
        }
    }

    while (stack.isNotEmpty()) {
        if(stack.pop() == cur) cur++
        else break
    }

    bw.write(if(stack.isEmpty()) "Nice" else "Sad")
    bw.flush()
    bw.close()
    br.close()
}

 

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

[백준] 24511번: queuestack - Kotlin[코틀린]  (0) 2024.01.18
[백준] 1644번: 소수의 연속합 - Kotlin[코틀린]  (0) 2024.01.17
[백준] 1806번: 부분합 - Kotlin[코틀린]  (0) 2024.01.15
[백준] 2047번: 두 용액 - Kotlin[코틀린]  (1) 2024.01.14
[백준] 2018번: 수들의 합 5 - Kotlin[코틀린]  (0) 2024.01.13
'알고리즘/Baekjoon' 카테고리의 다른 글
  • [백준] 24511번: queuestack - Kotlin[코틀린]
  • [백준] 1644번: 소수의 연속합 - Kotlin[코틀린]
  • [백준] 1806번: 부분합 - Kotlin[코틀린]
  • [백준] 2047번: 두 용액 - Kotlin[코틀린]
junghoooooon
junghoooooon
  • junghoooooon
    코드팁스
    junghoooooon
  • 전체
    오늘
    어제
    • 전체 (120)
      • 안드로이드 (0)
        • 코드팁스 (0)
      • 유니티 (0)
        • 코드팁스 (0)
      • 알고리즘 (118)
        • 알고리즘 (0)
        • Baekjoon (118)
      • GitHub (0)
      • 티스토리 (2)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      그리디
      티스토리
      그래프 탐색
      이분 탐색
      dfs
      브루트포스
      유니온파인드
      DP
      큐
      누적 합
      구현
      투 포인터
      MST
      수학
      스택
      우선순위 큐
      백트래킹
      그래프이론
      모듈러 곱셈 역원
      소수 판정
      정렬
      크루스칼
      프림
      분리집합
      재귀
      문자열
      BFS
      에라토스테네스의 체
      피보나치
      분할 정복
    • hELLO· Designed By정상우.v4.10.2
    junghoooooon
    [백준] 12789번: 도키도키 간식드리미 - Kotlin[코틀린]
    상단으로

    티스토리툴바