fragment-header
fragment-markdown
홈
로그인
로그아웃
내 블로그
설정
로그인
백준 34534 (C++) Form a Straight!
최초 업로드: 2025-10-23 11:09:51
최근 수정 시간: 2025-10-23 11:09:51
게시자: rlatjwls3333
카테고리: 백준
조회수: 13
# [Bronze I] Form a Straight! [문제 링크](https://www.acmicpc.net/problem/34534) ## 문제 설명 <p><img alt="" src="https://upload.acmicpc.net/3152ca96-11ba-4dd9-a757-7ac807e36c31/-/preview/" style="width:50%; height:auto; display:block; margin:auto;"></p> <p>현석이는 $1$부터 $9$까지의 숫자가 적힌 카드 더미에서 임의로 다섯 장의 카드를 뽑았다. 현석이는 이 카드들을 <strong>스트레이트</strong>로 만들고자 한다.</p> <p>다섯 장의 카드를 임의로 재배열하여 숫자가 연속으로 이어지도록 할 수 있다면 스트레이트를 만들었다고 본다. 즉, 스트레이트는 아래 다섯 경우 중 하나이다.</p> <ul> <li>$[1,2,3,4,5]$</li> <li>$[2,3,4,5,6]$</li> <li>$[3,4,5,6,7]$</li> <li>$[4,5,6,7,8]$</li> <li>$[5,6,7,8,9]$</li> </ul> <p>현석이는 뽑은 카드 중 한 장의 카드에 적힌 숫자를 원하는 숫자로 바꾸는 마법을 얼마든지 부릴 수 있다. 현석이가 뽑은 카드들을 스트레이트로 만들기 위해 최소 몇 번의 마법을 부려야 하는지 구해보자.</p> ## 입력 <p>첫째 줄에 현석이가 뽑은 카드 다섯 장에 적힌 숫자가 공백으로 구분되어 주어진다. 각 숫자는 $1$부터 $9$ 사이의 숫자 중 하나이며, 서로 다르다.</p> ## 출력 <p>뽑은 카드들을 스트레이트로 만들기 위해 최소 몇 번의 마법을 부려야 하는지 출력한다.</p> ## 풀이 연속된 5개의 수 중 없는 개수의 최소를 출력했습니다. ``` c++ #include<bits/stdc++.h> using namespace std; bool exist[10]; int main() { ios::sync_with_stdio(0); cin.tie(0); for(int i=0;i<5;i++) { int a; cin >> a; exist[a]=true; } int minCnt=5; for(int i=1;i<=5;i++) { int cnt=0; for(int j=i;j<=i+4;j++) cnt += !exist[j]; minCnt = min(minCnt, cnt); } cout << minCnt; } ```