군대에서_코딩하기_알고리즘_17
거의 매번 글을 쓸때마다 오랜만의 업로드라고 글을 시작하는것같은데.. 이번에도 역시 오랜만의 업로드가 맞다..
그 이유중 첫번째는 얼마전 육군 창업경진대회 본선 진출에 떨어지고 나서 뭔가 번아웃이 세게 왔어서 뭔가 손에 안잡혔었고, 둘째는 요즘 훈련이 너무 많았다.. 사지방 연등에 제한이 있었어서 코딩을 잘 못했다. 그리고 셋째는, 연등을 하면서 문제들을 풀기는 하나, 잘 안풀려서 업로드 할게 없었다..
그리고 오늘 깨달은게 하나 있었다. 고민하다가 잘 안되면 그냥 강의를 들어버리자! 진도가 너무 안나가서 안되겠다..
음.. 오늘 문제는 공주 구하기? 문제였는데, 이건 설명이 굉장히 까다로우니 그냥 사진을 첨부하겠다.
대충 이런 문젠데, 처음에는 런타임 걱정을 많이했다. 뭔가 1차원 배열의 벡터를 만들어서 하는건 알겠으나, 계속해서 돌고돌아야되고 또 N의 범위가 1000까지 나올수도 있어서 그냥 단순하게 반복문을 돌리면 안될것이라 생각해서 뭔가 다른 방향으로 접근했으나, 그냥 단순하게 접근하는게 맞았다..
처음부터 배열들을 0으로 초기화시켜놓고, 하나씩 카운팅하면서 K로 나눠떨어지는 수들만 1로 만들어놓으면 되는 문제다.
생각보다 까다로우면서도 단순한 문제다..
코드는 다음과 같다.
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main(){
int N, K;
cin>>N>>K;
//N은 8 K는 3
int count = N; //벡터안의 실질적 원소 개수
int temp=1; //세주려고 하는거
int check_num = 1;
vector<int> prince(N+1);
while(count!=1){
if(check_num==N+1){
check_num = 1;
}
if(prince[check_num]==0){
if(temp%K==0){
prince[check_num]++;
//cout<<"아웃된 왕자: "<<check_num<<endl;
count--;
temp = 1;
check_num++;
}
else{
temp++;
check_num++;
}
}
else{
check_num++;
}
}
for(int i=1; i<N+1; i++){
if(prince[i]==0){
cout<<i;
break;
}
}
}
Author And Source
이 문제에 관하여(군대에서_코딩하기_알고리즘_17), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@shintaewon/군대에서코딩하기알고리즘17저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)