티끌모아 태산

[백 준/구현] 1159: 농구 경기 본문

백준 문제/문자열,누적합,구현

[백 준/구현] 1159: 농구 경기

goldpig 2024. 1. 2. 15:52
728x90

https://www.acmicpc.net/problem/1159

 

1159번: 농구 경기

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

www.acmicpc.net

핵심 아이디어

  • Counting 배열
  • Counter 라이브러리 (파이썬)

처음에 풀 때는 counting 배열로 풀다 chr()을 고려하지못해서 Counter 를 사용하여서 풀었다. 그리고 이 문제를 풀면서 ''.join()함수에 대해서도 알 수 있었다.

join 함수

''.join(리스트)

매개변수로 들어온 리스트가 ['a', 'b', 'c'] 일 때 문자열을 'abc'로 합쳐서 반환해준다.

 

'구분자'.join(리스트)

리스트의 값과 값 사이에 '구분자'를 넣어 하나의 문자열로 합쳐서 반환해준다. '+'.join(['a', 'b', 'c']) 일 경우 "a+b+c" 의 문자열 형태로 반환해준다.

풀이

import sys
input = sys.stdin.readline
from collections import Counter

n = int(input())

array = []
for i in range(n):
	s = input().rstrip()
	array.append(s[0])

array_counter = Counter(array)
result = []
for i in array_counter:
	if array_counter[i] >= 5:
		result.append(i)

if len(result) > 0:
	print(''.join(sorted(result)))
else:
	print('PREDAJA')

두번 째 풀때는 다시 counting 배열을 활용해서 풀었다.

import sys
input = sys.stdin.readline
from collections import Counter

n = int(input())

arr = [0] * 26

data = []
for i in range(n):
	s = input().rstrip()
	data.append(s[0])

for i in data:
	arr[ord(i) - 97] += 1
#print(arr)
if max(arr) >= 5:
	for i in range(len(arr)):
		if arr[i] >= 5:
			print(chr(i+97), end='')
else:
	print('PREDAJA')
728x90