[백준] 12789번: 도키도키 간식드리미 (C++)

2023. 8. 14. 17:00·Algorithm/문제 풀이

문제


문제링크: https://www.noj.am/12789

 

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

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

www.acmicpc.net

 

 

문제 분석


 

잡설이 구구절절 길어서 그렇지 막상 읽어보면

입력 값들을 순서대로 나열할 수 있으면 Nice, 아니면 Sad를 출력하라는 간단한 내용이다.

 

<출처: https://news.mt.co.kr/mtview.php?no=2015061813048540744>

이렇게 시험기간 격려 간식 이벤트에 학생들이 마구 줄을 선 상황.

T자형 공간을 활용해 배부받은 표의 숫자순으로 학생들을 보내야한다

 

심지어 그림도 아주 직관적이다



필요한 것 목록.

1. 순서를 알려주는 변수.

2. 아직 차례가 아닌 수들을 담았다가, 차례가 되면 뺄 수 있는 후입선출 자료구조 스택.

 

오늘도 C++ 라이브러리엔 스택이 준비되어있다.

간단하게 코드 앞부분에 #include <bits/stdc++.h> 한번 박아주거나, <stack> 쓰면 된다.

 

후입선출 LIFO 자료구조 stack이 오늘의 주인공이다.

 

stack에 대해 잘 모르면 이 링크(코딩젤리의 블로그)를 참고.




자세한 풀이


구간 별로 기능을 매칭

첫 입력으로 들어오는 N(학생 수)번의 반복문 내에서 끝낼 수 있다.

 

입력받은 숫자가 해당 순서와 일치하면 쿠키먹게 보내주고,

아니면 스택에서 기다리라고 하면 된다.

 

그리고 스택에 기다리는 애들도 자기 차례가 오면 나오게 해주면 된다.

 

와 즁말 간단하죠?

 

 

코드 (C++)


#include <bits/stdc++.h>
using namespace std;

stack<int> S;
int N, T, cnt=1;

int main(){	
	ios_base::sync_with_stdio(0);cin.tie(0);
	cin >> N; // 학생들의 수. 
	
	while(N--){
		cin >> T;
		
		if(T==cnt) cnt++; // 현재 순번과 일치한다면 보내줘~ 
		else S.push(T); // 아니면 스택에서 기다리도록. 
		
		while(!S.empty()&&S.top()==cnt){
			S.pop();  // 스택 맨 위가 현재 순번과 일치한다면 보내줘~ 
			cnt++;
		}
	}
	
	if(S.empty()) cout << "Nice"; // 스택이 비었다면, 잘 해결된 것. 
	else cout << "Sad";
}

 

주석봐도 이해 안 되면 댓글 ㄱㄱ

'Algorithm > 문제 풀이' 카테고리의 다른 글

[백준] 4485번: 녹색 옷 입은 애가 젤다지? (C++)  (3) 2024.03.06
[백준] 25945: 컨테이너 재배치 (C / C++)  (1) 2023.10.08
[백준] 1063번: 킹 (C++)  (0) 2023.09.24
[백준] 2630번: 색종이 만들기 (C++)  (0) 2023.08.16
[백준] 11478번: 서로 다른 부분 문자열의 개수 (C++)  (0) 2023.08.13
'Algorithm/문제 풀이' 카테고리의 다른 글
  • [백준] 25945: 컨테이너 재배치 (C / C++)
  • [백준] 1063번: 킹 (C++)
  • [백준] 2630번: 색종이 만들기 (C++)
  • [백준] 11478번: 서로 다른 부분 문자열의 개수 (C++)
잭희
잭희
  • 잭희
    int main(){
    잭희
  • 전체
    오늘
    어제
    • 분류 전체보기 (34) N
      • C 연구 노트 (3)
      • Rust 연구 노트 (8)
        • Rust 이야기 (4)
        • "EzyTutors" 프로젝트 (4)
      • Computer Science (0)
      • Back-end (2)
      • Algorithm (9)
        • 이론 (2)
        • 문제 풀이 (7)
      • Etc. (9) N
      • 소소한 이야기 (3)
      • 일상 (0)
  • 인기 글

  • hELLO· Designed By정상우.v4.10.3
잭희
[백준] 12789번: 도키도키 간식드리미 (C++)
상단으로

티스토리툴바