Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 18877번 Social Distancing
- spring boot
- CCPC
- BOJ 18881
- social distancing
- BOJ 18877
- Social Distancing II
- 베리어블 폰트
- BOJ
- BOJ Social Distancing
- BOJ Social Distancing II
- 반응형 웹
- 일해라 개발자
- vue.js
- 모바일 버전만들기
- Catholic univ Computer Programming Contest
- VUE
- 백준 Social Distancing II
- 백준 BOJ
- 18881번
- CSS
- 18877번
- 백준 18877번
- async
- await
- Spring Security
- 텐서플로맛
- JavaScript
- java
- 백준
Archives
- Today
- Total
나아가는 길에 발자국을 찍어보자
[백준/BOJ] 1242번 소풍 본문
반응형
굉장히 간단하면서도 어려웠던문제.
처음에 백터를 이용해서 게임의 순서대로 퇴장당하는 위치를 계산후 없애고 순서에 맞게 배열하는 방식으로 접근했으나 시간초과로 틀렸다.
힌트는 질문검색을 보고 알았는데
굳이 모든 노드(친구들)의 위치를 알고 어떤 노드가 없어질지 체크할 필요없이
현재라운드에서의 동호가 몇번째인지만 체크해서 K와 비교하면 된다는 걸 알게되었다.
매 라운드 마다 퇴장당하는 위치의 번호와 동호의 번호를 구해서 같을 때까지 반복하여 라운드 수를 구했던 문제.
문제를 있는 그대로 구현하는 것이 아니라 요약해서 핵심만 구하면 답은 쉽게 낼 수 있는 문제였다.(거기까지 생각해내는 것이 중요하겠지만.... 나는 못했다ㅜㅜ)
https://www.acmicpc.net/problem/1242
<코드>
#include<iostream>
#include<algorithm>
using namespace std;
int main(void) {
int N, K, M;
cin >> N >> K >> M;
int cnt=0;
int target;
if (K%N)target = K%N;
else target = N; //target이 0이 될때를 고려
while (1) {
cnt++;
if (target == M) {
break;
}
if (M - target > 0) {
M -= target;
N--;
if(K%N)target = K%N;
else target = N;
}
else {
M -= target;
M = N + M;
N--;
if (K%N)target = K%N;
else target = N;
}
}
printf("%d\n", cnt);
return 0;
}
반응형
'Algorithm > Problem Solving' 카테고리의 다른 글
[백준/BOJ] 2499번 의좋은 형제 (0) | 2020.03.27 |
---|---|
[백준/BOJ] 17370번 육각형 우리 속의 개미 (0) | 2020.02.14 |
[백준/BOJ]14500번 테트로미노 (0) | 2020.01.11 |
[백준/BOJ]15685번 드래곤 커브 (0) | 2020.01.11 |
[백준/BOJ] 12100번 2048(Easy) (0) | 2020.01.11 |
Comments