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 |
Tags
- centos도커설치
- 서버에도커설치
- 스프링부트
- 스프링익셉션처리
- 스프링부트팔로잉
- 스프링구독
- vm도커설치하는법
- dockerinstall
- 출처 문어박사
- 스프링부트팔로우취소
- 멀티폼
- 스프링부트서버에사진전송
- 스프링부트사진올리기
- 스프링사진업로드
- 스프링부트api
- 인스타클론
- 출처 메타코딩
- WAS웹서버
- 스프링부트중복예외처리
- 출처 노마드코더
- 파이썬sort
- 도커설치하는법
- 스프링부트구독취소
- 스프링이미지업로드
- 출처 코딩셰프
- 출처 따배도
- 우분투도커설치
- 스프링사진
- springboot_exception_handler
- ssh도커설치
Archives
- Today
- Total
MakerHyeon
[백준] 2164번 카드2 (Python,C++) 본문
https://www.acmicpc.net/problem/2164
2164번: 카드2
N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가
www.acmicpc.net
아주 쉽지만 자료구조의 중요성을 느낄 수 있었던 문제이다.
해당문제는 리스트를 이용하면 시간초과가 나온다.
1. 맨앞값 삭제 O(N)
2. 맨앞의 값을 맨뒤로 보내기 (삽입,삭제) O(N) X 2
이짓을 1이 남을때까지,즉 N-1번반복하면 N-1 X O(N) 총 복잡도는 O(N^2)이 된다.
따라서 해당문제는 시간복잡도 O(1)인 queue를 이용한다.
SOLUTION CODE
# PYTHON
from collections import deque
N = int(input())
dq = deque(range(1,N+1))
while len(dq) > 1: // 두개이상일때까지반복
dq.popleft()
dq.append(dq.popleft())
print(dq.popleft())
# C++
#include <iostream>
#include <queue>
using namespace std;
int main(int argc,char**argv){
ios::sync_with_stdio(0);
cin.tie(0);
queue<int> q;
int N;
cin >> N;
for(int i=1;i<=N;i++){
q.push(i);
}
while(q.size()>1){
q.pop();
q.push(q.front());
q.pop();
}
cout << q.front();
return 0;
}
'Algorithm > backjoon' 카테고리의 다른 글
[백준] 1449번 수리공 항승 (0) | 2023.02.13 |
---|---|
[백준] 2309번 일곱 난쟁이 (Python,C++) (0) | 2023.02.12 |
[백준] 11286번 절댓값 힙 (Python,C++) (0) | 2023.01.27 |
[백준] 9012번 괄호 (Python,C++) (0) | 2023.01.27 |
[백준] 1931번 회의실 배정 (Python,C++) (0) | 2023.01.03 |
Comments