코드 포스(Code Force) 399 - A. Pages
알고리즘 대회2018. 11. 5. 01:14
728x90
반응형
문제 유형: 구현
문제 URL: http://codeforces.com/contest/399/problem/A
이 문제는 구현의 끝판왕 문제인 게시판 페이징(Paging) 문제입니다. 전체 페이지의 개수를 N, 현재 페이지를 P, 현재 페이지를 기준으로 왼쪽과 오른쪽에 몇 개의 페이지까지 표시할 지를 K라고 합니다. 이 때 << 3 4 (5) 6 7 >>와 같은 방식으로 페이징 처리를 하면 됩니다.
왼쪽으로 페이지가 더 남았을 때는 "<<"를 출력하고, 오른쪽으로 페이지가 더 남았을 때는 ">>"를 출력합니다. 실제 게시판을 구현할 때도 비슷한 방식의 페이징 처리 알고리즘 구현해 본 경험이 있다는 점에서 재미있게 풀 수 있었습니다.
※ 예시 입출력 ※
input
17 5 2
output
<< 3 4 (5) 6 7 >>
※ 정답 소스코드 ※
(컴파일 환경: GNU G++11 5.1.0)
#include <iostream> #include <stdio.h> using namespace std; int main(void) { int n, p, k; cin >> n >> p >> k; // 왼쪽으로 이동이 가능한 경우 if(p - k > 1) { cout << "<< "; } for(int i = ((p - k > 1)? p - k : 1); i < p; i++) { cout << i << ' '; } // 현재 페이지를 출력 cout << "(" << p << ") "; for(int i = p + 1; i <= ((p + k < n)? p + k : n); i++) { cout << i << ' '; } // 오른쪽으로 이동이 가능한 경우 if(p + k < n) { cout << ">>"; } return 0; }
728x90
반응형
'알고리즘 대회' 카테고리의 다른 글
코드 포스(Code Force) 915 - B. Browser (0) | 2018.11.11 |
---|---|
코드 포스(Code Force) 915 - A. Garden (0) | 2018.11.11 |
코드 포스(Code Force) 390 - A. Inna and Alarm Clock (0) | 2018.11.05 |
코드 포스(Code Force) 393 - A. NineTeen (0) | 2018.11.05 |
2018 페이스북 해커컵(Facebook Hacker Cup) Qualification Round 문제 설명 및 풀이 (0) | 2018.07.10 |