자료구조, Linked List
17 Jul 2025 | Data Structure개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
프린터 작업들이 우선순위를 가지고 있을 때, 특정 작업이 언제 인쇄될지 구하세요.
def printer_queue(priorities, location):
    """
    priorities: 각 작업의 우선순위 리스트
    location: 확인하고 싶은 작업의 인덱스
    반환: 해당 작업이 몇 번째로 인쇄되는지 (1부터 시작)
    """
    # 여기에 코드를 작성하세요
    pass
# 테스트
print(printer_queue([2, 1, 3, 2], 2))  # 3번째 작업(우선순위 3)이 언제 인쇄되는지
print(printer_queue([1, 1, 9, 1, 1, 1], 0))  # 첫 번째 작업이 언제 인쇄되는지
def printer_queue(priorities, location):
    # (우선순위, 원래_인덱스) 형태로 큐 생성
    queue = [(p, i) for i, p in enumerate(priorities)]
    # 인쇄된 작업 수
    count = 0
    # 큐가 빌 때까지 반복
    while queue:
        # 현재 작업 가져오기
        current = queue.pop(0)
        # 현재 작업보다 우선순위가 높은 작업이 있는지 확인
        if any(current[0] < q[0] for q in queue):
            # 우선순위가 높은 작업이 있으면 현재 작업을 큐의 맨 뒤로 이동
            queue.append(current)
        else:
            # 우선순위가 가장 높으면 인쇄하고 카운트 증가
            count += 1
            # 현재 작업이 우리가 찾던 작업인지 확인
            if current[1] == location:
                return count
    # 이 부분은 실행되지 않아야 함 (큐에서 해당 작업을 반드시 찾아야 함)
    return -1
# 테스트
print(printer_queue([2, 1, 3, 2], 2))  # 1
print(printer_queue([1, 1, 9, 1, 1, 1], 0))  # 5
개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
당신은 박물관의 유물 감정사입니다. 새로 발굴된 유물 목록이 딕셔너리 리스트 형태로 도착했습니다. 각 유물은 {‘이름’: ‘…’, ‘가치’: …, ‘국가’: ‘…’} 형태로 되어있습니다. 특정 국가의 유물만 골라내고, 그 가치의 평균을 계산해야 합니다.
유물 데이터(리스트)와 국가 이름(문자열)을 입력받아, 해당 국가의 유물들의 평균 가치를 계산하는 함수 evaluate_artifacts를 작성하세요.
규칙:
예시:
artifacts = [
    {'이름': '청동검', '가치': 500, '국가': '한국'},
    {'이름': '파라오 마스크', '가치': 2500, '국가': '이집트'},
    {'이름': '직지심체요절', '가치': 3000, '국가': '한국'},
    {'이름': '로제타석', '가치': 2000, '국가': '이집트'},
    {'이름': '원반 던지는 사람', '가치': 1500, '국가': '그리스'}
]
country = '한국'
1750
    <1. 내가 푼 풀이>
def evaluate_artifacts(artifacts, country):
    country_value = []
    for artifact in artifacts:
        if artifact['국가'] == country:
            country_value.append(artifact['가치'])
            
    if country_value:
        return int(sum(country_value) / len(country_value))
    else:
        return 0
evaluate_artifacts(artifacts, '한국')
<2. 교육 내 답변>
def evl_art(artifacts, country):
    country_value = []
    for artifact in artifacts:
        if artifact['국가'] == country:
            country_value.append(artifact["가치"])
    #평균
    avg_cont = sum(country_value)/len(country_value)
    return int(avg_cont)
개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
당신은 중세 왕국의 세금 징수관입니다. 왕국의 재정을 위해 각 영지민의 소득에 따라 정해진 세율로 세금을 계산해야 합니다. 세율은 소득 구간에 따라 달라집니다.
영지민의 소득(gold)을 입력받아 내야 할 세금을 계산하는 프로그램을 작성하세요.
세율 규칙:
예시:
7515 (75 * 0.2 = 15)12036 (120 * 0.3 = 36)def count_duty(gold):
    # gold = 영지민의 소득
    if gold <= 10:
        return "세금 안내도 됩니다"
    elif gold > 10 and gold <= 50:
        return f"너의 세금: {int(gold * 0.1)}"
    elif gold > 50 and gold <= 100:
        return f"너의 세금: {int(gold * 0.2)}"
    elif gold > 100:
        return f"너의 세금: {int(gold * 0.3)}"
# count_duty(75)
count_duty(120)
개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있습니다.
당신은 우주 탐사선 ‘노바-1’의 통신 장교입니다. 그런데 외계 신호의 공격으로 인해 동료들과의 통신 암호가 뒤죽박죽이 되어버렸습니다! 암호를 원래대로 복구하여 긴급 메시지를 해독해야 합니다. 암호는 단어의 순서가 거꾸로 뒤집혔고, 특정 글자가 다른 글자로 바뀌었습니다.
주어진 암호 문장을 해독하는 함수 decode_message를 작성하세요.
해독 규칙:
예시:
"w@lc$m@! t$ pyth$n #s h@ll$!""hello is python to welcome"<1. 내가 푼 풀이>
def decode_message(sentence):
    for i in sentence:
        if i == '@':
            sentence = sentence.replace('@', 'e')
        elif i == '#':
            sentence = sentence.replace('#', 'i')
        elif i == '$':
            sentence = sentence.replace('$', 'o')
        elif i == '%':
            sentence = sentence.replace('%', 'u')
    # sentence를 ,구분자로 나누고 []배열안에 넣기
    sentence = sentence.split()  
    # 역순으로 넣은 후 배열에서 스트링으로
    return ' '.join(sentence[::-1])  
decode_message("w@lc$m@! t$ pyth$n #s h@ll$!")
<2. 교육 내 답변>
def decode_message(encoded_str):
     # 1. 암호를 단어 단위로 분리합니다.
    words = encoded_str.split(' ')
    # 2. 단어의 순서를 거꾸로 뒤집습니다.
    words.reverse()
    decoded_words = []
    print(decoded_words)
    for word in words:
        # 3. 각 단어의 특수문자를 알파벳으로 바꿉니다.(메서드 체이닝 활용)
        temp_word = word.replace('@', 'e').replace('#', 'i').replace('$', 'o').replace('%', 'u')
        decoded_words.append(temp_word)
    # 4. 해독된 단어들을 다시 하나의 문장으로 합칩니다.
    return " ".join(decoded_words)
 # 예시 실행
encoded_message = "w@lc$m@! t$ pyth$n #s h@ll$!"
decoded_message = decode_message(encoded_message)
print(f"암호: {encoded_message}")
print(f"해독: {decoded_message}")