-
[구현] 한 줄로 서기(1138)BOJ C++ 알고리즘 공부 2022. 5. 8. 00:01
https://www.acmicpc.net/problem/1138
1. 문제 개요
N명의 사람들은 매일 아침 한 줄로 선다. 이 사람들은 자리를 마음대로 서지 못하고 오민식의 지시대로 선다.
어느 날 사람들은 오민식이 사람들이 줄 서는 위치를 기록해 놓는다는 것을 알았다. 그리고 아침에 자기가 기록해 놓은 것과 사람들이 줄을 선 위치가 맞는지 확인한다.
사람들은 자기보다 큰 사람이 왼쪽에 몇 명 있었는지만을 기억한다. N명의 사람이 있고, 사람들의 키는 1부터 N까지 모두 다르다.
각 사람들이 기억하는 정보가 주어질 때, 줄을 어떻게 서야 하는지 출력하는 프로그램을 작성하시오.
2. 입출력
3. 문제 풀이
여러가지 방법을 시도해보다 얼떨결에 맞았다.
통과된 코드는 키가 제일 작은 사람부터 순서대로 자리에 넣어주되, 자기보다 키가 큰 사람이 주어진 인풋만큼 있는지 확인하는 코드를 넣었다.
4. 전체 코드
#include<iostream> using namespace std; int ans[10]; int main(void) { int n, temp; scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&temp); int num = 0; int index = 0; while(1){ if(num>=temp && ans[index]==0) break; if(ans[index]==0) num++; index++; } ans[index] = i; } for(int i=0;i<n;i++) printf("%d ",ans[i]); }
5. 새롭게 알게된 사실
전역 변수로 선언한 배열을 자동으로 그 안의 값들이 0으로 초기화 되지만 지역 변수의 경우에는 그렇지 않다!
'BOJ C++ 알고리즘 공부' 카테고리의 다른 글
[BFS/DFS] 이분 그래프(1707) (0) 2022.05.08 [구현] 봄버맨(1691) (0) 2022.05.08 [BFS] 벽 부수고 이동하기 (2206)(C++) (0) 2022.05.01 [BFS/DFS] DFS와 BFS(1260)(C++) (0) 2022.04.24 [그리디] 잃어버린 괄호(15410)(C++) (0) 2022.04.17