Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 트랜스포머 #자연어처리 #딥러닝 #구글 #attention #self-attention #BERT #transformer #deeplearing
- Machine Learning
- BERT #구글BERT #BERT의정석
- 알고리즘 #levenshtein distance #편집거리 #edit distance
- 머신러닝
- docker #아나콘다 #anaconda #ubuntu anaconda #docker anaconda
- 구름
- docker #도커 #도커 컨테이너 #docker container #도커 우분투
- docker #cuda #docker container #도커 #도커 컨테이너 #쿠다 #cuda 11.3
- GPU #cuda out of memory #gpu 메모리 #pytorch
- docker #우분투 #ubuntu #도커 설치 #docker 설치 #docker installation #우분투 도커
- 백준
- ssh #우분투 ssh #우분터 서버 #도커 #우분투 도커 #docker #cuda #우분투 개발환경 #딥러닝 #ubuntu docker #ubuntu cuda
- 구름자연어처리과정
- jupyter notebook #anaconda #vscode #pytorch #딥러닝 #deep learning #vscode server #서버 vscode #ssh vscode #vscode cuda
- GPU #jtorch GPU #파이토치 병렬 #파이토치 GPU #pytorch gpu #multi process torch #horovod
- cuda #centos #cuda삭제 #리눅스 #cenos cuda삭제
- 깃허브 #우분투 #ubuntu #Github #깃허브 우분투 #깃헙 우분투 #깃헙
- pytorch #cuda #우분투 torch #ubuntu pytorch #cuda torch #cuda pytorch
- pandas #folium #groupby #네이버부스트코스 #코칭스터디
- 백준 #알고리즘 #골드
- logistic regression
- 트랜스포머 #transformer #attention #self-attention #어텐션 #인공지능 #AI #딥러닝 #NLP #자연어처리
- 파이썬 #Python
Archives
- Today
- Total
바닥부터 시작하는 개발 공부
[알고리즘]백준 1235 : 학생 번호 본문
728x90
알고리즘 유형: 자료 구조(해쉬)
문제
이번에는 학생들을 더욱 효율적으로 관리하기 위해 학생마다 고유한 학생 번호를 부여하기로 하였다. 학생 번호는 0부터 9 사이의 숫자로 이루어진 문자열로, 모든 학생들의 학생 번호는 서로 다르지만 그 길이는 모두 같다.
학생들의 번호를 부여해 놓고 보니, 김진영 조교는 어쩌면 번호가 지나치게 긴 것은 아닌가 싶은 생각이 들었다. 예를 들어 아래와 같은 7자리의 학생 번호를 보자.
이름번호오민식 | 1212345 |
김형택 | 1212356 |
이동호 | 0033445 |
이처럼 학생 번호를 굳이 7자리로 하지 않고, 뒤에서 세 자리만을 추려서 남겨 놓아도 모든 학생들의 학생 번호를 서로 다르게 만들 수 있다.
이름번호오민식 | 345 |
김형택 | 356 |
이동호 | 445 |
하지만 세 자리보다 적게 남겨 놓아서는 모든 학생들의 학생 번호를 서로 다르게 만들 수 없다.
학생들의 번호가 주어 졌을 때, 뒤에서 k자리만을 추려서 남겨 놓았을 때 모든 학생들의 학생 번호를 서로 다르게 만들 수 있는 최소의 k를 구하는 프로그램을 작성하시오.
입력
첫째 줄에는 학생의 수 N(2≤N≤1,000)이 주어진다. 둘째 줄부터 N개의 줄에 걸쳐 각 학생의 학생 번호가 순서대로 주어진다. 모든 학생들의 학생 번호는 서로 다르지만 그 길이는 모두 같으며, 0부터 9 사이의 숫자로 이루어진 문자열이 주어진다. 문자열의 길이는 100보다 작거나 같다.
출력
첫째 줄에 구하고자 하는 가장 작은 k값을 출력한다.
풀이
import sys
from collections import defaultdict
dict =defaultdict(int)
N =int(sys.stdin.readline().strip())
nums=[]
for i in range(N):
num =sys.stdin.readline().strip()
nums.append(num)
i=1
while len(dict.keys())!=len(nums):
for num in nums:
dict[num[::-1][:i]]+=1
#숫자들을 뒤집어 거꾸로 i만큼의 자리수를 잘라 키로 딕셔너리에 집어넣습니다
if dict[num[::-1][:i]]==2:
#이때 키에 해당하는 밸류가 2면, 중복된 값이 존재한다는 의미이므로 딕셔너리를 초기화하고
#i를 1 추가해줍니다
dict =defaultdict(int)
i+=1
break
print(i)
728x90
'Algorithm > 백준' 카테고리의 다른 글
[알고리즘]백준 1735: 분수합 (0) | 2023.02.24 |
---|---|
[알고리즘]백준 9613: GCD합 (1) | 2023.02.24 |
[알고리즘]백준 1747: 소수&팰린드롬 (0) | 2023.02.24 |
[알고리즘]백준 2178번: 미로 탐색 (0) | 2023.02.21 |
[알고리즘]백준 1931번: 회의실 배정 (0) | 2023.02.21 |
Comments