Plite
전자오락 공방
Plite
전체 방문자
오늘
어제
  • 분류 전체보기 (274)
    • 프로젝트 (18)
      • 완성 프로젝트 (3)
      • 프로젝트 진행 내역 (15)
    • 공부 및 정리 (241)
      • 백준 코드 (222)
      • C++ (8)
      • DirectX (2)
      • Unreal Engine (6)
      • 프로그래밍 패턴 (3)
    • 기타 (12)
      • 기타 주저리 (10)
    • 게임과 취미 (1)
    • 대문 (1)

블로그 메뉴

  • 홈
  • 프로젝트
  • 취미, 일상
  • 백준 프로필

공지사항

  • [Read Me]
  • 제 블로그에 방문하신 것을 환영합니다.

인기 글

태그

  • 누적합
  • 우선순위큐
  • 트라이
  • 백준
  • 분할정복
  • KMP
  • 세그먼트 트리
  • 최소 스패닝 트리
  • 정렬
  • 큐
  • 브루트포스
  • 위상 정렬
  • LCA
  • 트리
  • UC++
  • 유니온 파인드
  • 투포인터
  • 수학
  • 문자열
  • 동적계획법
  • C++
  • SCC
  • 기하
  • 구현
  • 정수론
  • 백트래킹
  • 조합론
  • 스택
  • 그래프
  • 이분탐색

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Plite

전자오락 공방

[C++]백준 - 1159번 문제
공부 및 정리/백준 코드

[C++]백준 - 1159번 문제

2021. 10. 29. 17:22

1159번: 농구 경기 (acmicpc.net)

 

1159번: 농구 경기

상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작

www.acmicpc.net

 

1159번 : 농구 경기


상근이는 농구의 세계에서 점차 영향력을 넓혀가고 있다. 처음에 그는 농구 경기를 좋아하는 사람이었다. 농구에 대한 열정은 그를 막을 수 없었고, 결국 상근이는 농구장을 청소하는 일을 시작했다. 상근이도 농구장을 청소하면서 감독이 되기 위해 가져야할 능력을 공부해나갔다. 서당개 3년이면 풍월을 읊듯이 상근이는 점점 감독으로 한 걸음 다가가고 있었다. 어느 날 그에게 지방의 한 프로농구팀을 감독할 기회가 생기게 되었다. 그는 엄청난 지도력을 보여주며 프로 리그에서 우승을 했고, 이제 국가대표팀의 감독이 되었다.

내일은 일본과 국가대표 친선 경기가 있는 날이다. 상근이는 내일 경기에 나설 선발 명단을 작성해야 한다.

국가대표팀의 감독이 된 이후에 상근이는 매우 게을러졌다. 그는 선수의 이름을 기억하지 못하고, 각 선수의 능력도 알지 못한다. 따라서, 누가 선발인지 기억하기 쉽게 하기 위해 성의 첫 글자가 같은 선수 5명을 선발하려고 한다. 만약, 성의 첫 글자가 같은 선수가 5명보다 적다면, 상근이는 내일 있을 친선 경기를 기권하려고 한다.

상근이는 내일 경기를 위해 뽑을 수 있는 성의 첫 글자를 모두 구해보려고 한다.

 

입력


첫째 줄에 선수의 수 N (1 ≤ N ≤ 150)이 주어진다. 다음 N개 줄에는 각 선수의 성이 주어진다. (성은 알파벳 소문자로만 이루어져 있고, 최대 30글자이다)

 

 

출력


상근이가 선수 다섯 명을 선발할 수 없는 경우에는 "PREDAJA" (따옴표 없이)를 출력한다. PREDAJA는 크로아티아어로 항복을 의미한다. 선발할 수 있는 경우에는 가능한 성의 첫 글자를 사전순으로 공백없이 모두 출력한다.

 

 


 

생각해 볼 점


알파뱃은 총 26개이므로, A ~ Z까지의 알파뱃의 개수를 담는 배열 count를 하나 생성합니다.

 

count[0]  = 첫글자가 A인 선수의 인원 수

.

.

.

count[25] = 첫글자가 Z인 선수의 인원 수

 

이제, 선수들을 입력받습니다.

 

입력 받은 선수의 맨 앞글자만 따서 아스키 코드에 맞게 -97을 해줍니다.

 

소문자 'a' = 아스키 코드 97 이므로

 

count[0]에 추가해 주려면, count['a' - 97]++ 과 같이 나타내 주어야 합니다.

 

모든 입력을 count에 저장했다면, count를 반복문으로 확인하여

 

5명이 넘는 선수가 없다면 항복을, 있다면 해당 알파뱃을 출력합니다.

 

 

코드


#include <iostream>
using namespace std;

int main() 
{
    int N;
    scanf("%d", &N);
    int count[26] = {0, };
    for(int i = 0; i < N; i++)
    {
        char input[30];
        scanf("%s", &input);
        count[input[0] - 97]++;
    }
    
    bool pre = true;
    for(int i = 0; i < 26; i++)
    {
        if(5 <= count[i])
        {
            printf("%c", i + 97);
            pre = false;
        }
    }
    if(pre) printf("PREDAJA");
	
	return 0;
}

 

그 외


 

저작자표시 (새창열림)

'공부 및 정리 > 백준 코드' 카테고리의 다른 글

[C++]백준 - 2252번 문제  (0) 2021.10.31
[C++]백준 - 1173번 문제  (0) 2021.10.30
[C++]백준 - 1145번 문제  (0) 2021.10.29
[C++]백준 - 1076번 문제  (0) 2021.10.28
[C++]백준 - 1075번 문제  (0) 2021.10.28
    '공부 및 정리/백준 코드' 카테고리의 다른 글
    • [C++]백준 - 2252번 문제
    • [C++]백준 - 1173번 문제
    • [C++]백준 - 1145번 문제
    • [C++]백준 - 1076번 문제
    Plite
    Plite
    개발 일지, 게임 이야기 등을 적어두는 공간입니다.

    티스토리툴바