상세 컨텐츠

본문 제목

99클럽 코테 스터디 7일차 TIL + 오늘의 학습 키워드 : 해시

본문

728x90
반응형

7일차 도장 꾹!


제목: 99클럽 코테 스터디 7일차 TIL + 오늘의 학습 키워드 : 해시


- 오늘의 학습 키워드 : 해시

 

오늘도 키워드 힌트가 '해시'

 

백준 31562번 :전주 듣고 노래 맞추기


- 공부한 내용 본인의 언어로 정리하기
1. startswith()
: 문자열이 특정 문자열로 시작하는지 여부를 확인하는 메소드입니다. True 또는 False를 반환합니다.

사용예시

text = "Hello World"
print(text.startswith("Hello"))  # True
print(text.startswith("World"))   # False


2. 조건문 (if, elif, else)
: 조건에 따라 다른 코드를 실행할 수 있게 해주는 문법입니다.

사용예

score = 85
if score >= 90:
    print("A")
elif score >= 80:
    print("B")
else:
    print("C")

3. 반복문 (for, while)

: 특정 조건이 만족할 때까지 코드를 반복 실행할 수 있게 해주는 문법입니다.

사용예시

for i in range(5):
    print(i)  # 0, 1, 2, 3, 4

 

4. 리스트 컴프리헨션

: 기존 리스트를 기반으로 새로운 리스트를 간결하게 생성하는 방법

사용예시

squares = [x**2 for x in range(10)]  # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

- 오늘의 회고

 

-----------------

- 어떤 문제가 있었고, 나는 어떤 시도를 했는지

 

# 정환이 아는 노래 갯수 N, 정환이 맞히기 시도 할 노래 갯수 M 입력
N, M = map(int, input().split())

# 정환이 만든 음계에 따른 노래 제목
music_dict = {}

# N개의 노래와 음계를 입력받아 딕셔너리에 저장
for _ in range(N):
    scale, title = input().split()
    music_dict[scale] = title

# M개의 시도할 음계 입력받기
attempts = [input().strip() for _ in range(M)]

# 결과를 저장할 리스트
results = []

# 각 시도에 대해 결과를 확인
for attempt in attempts:
    count = 0
    music_name = ""
    
    # 음악 딕셔너리에서 음계 찾기
    for scale, title in music_dict.items():
        if scale.startswith(attempt):
            count += 1
            music_name = title
    
    # 출력 규칙에 따라 결과 결정
    if count == 1:
        results.append(music_name)
    elif count > 1:
        results.append("?")
    else:
        results.append("!")

# 결과 출력
for result in results:
    print(result)

1번째 시도 런타임 에러..;;



- 어떻게 해결했는지

# 정환이 아는 노래 갯수 N, 정환이 맞히기 시도 할 노래 갯수 M 입력
N, M = map(int, input().split())

# 노래 제목과 음계를 저장할 리스트
music_dict = []

# N개의 노래 정보 입력받기
for _ in range(N):
    data = input().split()
    title = data[1]  # 노래 제목
    scale = ''.join(data[2:9])  # 처음 등장하는 7개의 음을 하나의 문자열로 결합
    music_dict.append((title, scale))

# M개의 시도할 음계 입력받기
attempts = [input().strip().replace(' ', '') for _ in range(M)]

# 결과를 저장할 리스트
results = []

# 각 시도에 대해 결과 확인
for attempt in attempts:
    count = 0
    music_name = ""
    
    # 음악 리스트에서 음계 찾기
    for title, scale in music_dict:
        if scale.startswith(attempt):  # 첫 세 음이 시작하는지 확인
            count += 1
            music_name = title
    
    # 출력 규칙에 따라 결과 결정
    if count == 1:
        results.append(music_name)
    elif count > 1:
        results.append("?")
    else:
        results.append("!")

# 결과 출력
for result in results:
    print(result)

코드 설명:
1. 입력 부분:
첫 줄에서 정환이 아는 노래의 개수 N과 맞히기 시도 할 노래의 개수 M을 입력받습니다.
다음 N줄에서는 각 노래의 제목과 첫 7개 음계를 입력받아 리스트 music_dict에 저장합니다. 음계는 문자열로 결합하여 저장합니다.
2.시도 부분:
M개의 시도할 음계를 입력받아 리스트 attempts에 저장합니다. 각 시도는 공백을 제거하고 하나의 문자열로 처리합니다.
3. 결과 확인 및 출력:
각 시도에 대해 저장된 노래 리스트를 검사하고, 시작하는 음계가 일치하는 노래의 개수를 세어 count에 저장합니다.
조건에 맞추어 결과를 results 리스트에 추가한 후, 마지막에 모든 결과를 출력합니다.
- 무엇을 새롭게 알았는지

1. split()와 join()을 같이 비교하면서 사용법 더 익힐 것. 사용법이 딱 반대다.


- 내일 학습할 것은 무엇인지

 

코테 정리하면서,
회사 업무에 대해서 꼭 알아야 할 것들 학습 시작 예정
+ sqld 개발자 문제 풀이 시작
+ knou강의 1개씩 듣기

Any, TiL, 개발자취업, 백준, 백준27160번, 코딩테스트준비, 파이썬, 할리갈리, 항해99, 해시

출처: https://exit9509.tistory.com/261 [데브수달:티스토리]

728x90
반응형

관련글 더보기