728x90
반응형
문제 풀기 전 생각 :
/*
문제를 읽어보면 알겠지만
제일 앞의 숫자를 삭제하고
뒤에 삽입하고 하는 작업을 쉽게 할 수 있는
컨테이너로 리스트가 있다.
그래서 리스트를 사용했다.
*/
#include <iostream>
#include <list>
using namespace std;
int main() {
list<int> l;
int n;
cin >> n;
for(int i=1 ; i<=n ; i++) l.push_back(i);
while(l.size() != 1){
l.pop_front();
l.push_back(l.front());
l.pop_front();
}
cout << l.front();
return 0;
}
https://www.acmicpc.net/problem/2164
2164번: 카드2
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
풀 때 어려웠던 점 또는 느낀점 :
리스트 컨테이너 사용을 거의 처음 해봤다.
유용한 도구를 얻은 것 같다.
개선방안 :
#include<stdio.h>
int f(int n)
{
if(n==1) return 1;
if(n==2) return 2;
if(n%2==0) return 2*f(n/2);
if(n%2==1)
{
return f(n/2+1)==1 ? n : 2*(f(n/2+1)-1);
}
}
int n;
int main(void)
{
scanf("%d", &n);
printf("%d", f(n));
return 0;
}
위의 코드는 리스트 컨테이너를 사용하지 않고 풀었다.
오호 재귀함수를 이용해 풀은 듯 하다.
저런 생각은 어떻게 떠올리는 걸까...
나도 계속 코딩을 하다보면 가능할까?
728x90
반응형
'Problem Solving' 카테고리의 다른 글
[C++] [LeetCode 234] Palindrome Linked List (0) | 2021.07.26 |
---|---|
[C++] [11866] 요세푸스 문제 0 (0) | 2021.07.25 |
[C++] [프로그래머스] 방문 길이 (0) | 2021.07.25 |
[C++] [프로그래머스] 약수의 개수와 덧셈 (0) | 2021.07.25 |
[C++] [백준 2941] 크로아티아 알파벳 (0) | 2021.07.25 |
댓글