강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

connor10님의 프로필 이미지
connor10

작성한 질문수

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

코딩테스트

작성

·

62

0

문제 1. 현재 N개의 숫자 카드를 가지고 있고, 각 숫자카드마다 정수가 하나씩 적혀있다. 정수 M개가 주어졌을때,이수가적혀있는숫자카드를현재가지고있는지아닌지를구하는프로그램을작성하여라. 입출력 및조건 • 입력의첫째줄에는현재가지고있는숫자카드의개수N이주어진다. (1≤N≤500,000) • 입력의둘째줄에는숫자카드에적혀있는정수들이공백한칸으로구분되어주어진다. (수의범위는 −10,000,000 부터 10,000,000 사이의 중복되지 않는 정수) • 입력의셋째줄에는M이주어진다. (1≤M≤500,000) • 입력의넷째줄에는현재가지고있는숫자카드인지아닌지를구해야할M개의정수가공백한칸으로 구분되어주어진다. (수의범위는−10,000,000 부터 10,000,000 사이의 중복되지 않는 정수) • 출력의첫번째줄에는주어진M개의수에대해서,각수가적힌카드를현재가지고있으면1,아니면 0을 공백한칸으로구분하여출력한다.

image

 

CODE HERE 부분의 코드를 짜야하는데 도와주세요


import time import utils def solution(test_case): # time check start_time = time.time() ##################### CODE HERE ##################### ##################################################### # end time elapsed_time = time.time() - start_time print("Elapsed time: {:.8f} seconds".format(elapsed_time)) return result ###################### DO NOT TOUCH BELOW ###################### if __name__ == '__main__': import argparse parser = argparse.ArgumentParser(description = 'Argument parser') parser.add_argument('--input', '-i', default = './input', help = 'Input file path') parser.add_argument('--output', '-o', default = './output', help = 'Output file path') args = parser.parse_args() utils.output_checker(args.output) test_cases = utils.read_input(args.input) for test_case in test_cases: result = solution(test_case) utils.write_ouput(args.output, result) utils.compare_files(args.output)

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

connor10님께서 작성하신 문제를 해결하기 위해 Python 코드 예제를 제공드리겠습니다. 이 문제는 주어진 숫자 카드의 집합에서 특정 숫자가 존재하는지를 확인하는 문제입니다. 시간 복잡도를 고려하여 효율적인 탐색 방법을 사용해야 합니다.

해당 문제를 효율적으로 해결하기 위해 집합(set)을 활용할 수 있습니다. 집합은 빠른 검색이 가능하다는 장점이 있습니다. 아래는 구현 코드 예시입니다:

import time
import utils

def solution(test_case):
    # time check
    start_time = time.time()

    ##################### CODE HERE #####################
    n, cards, m, query_numbers = test_case
    card_set = set(cards)

    result = []
    for number in query_numbers:
        if number in card_set:
            result.append(1)
        else:
            result.append(0)
    #####################################################

    # end time
    elapsed_time = time.time() - start_time
    print("Elapsed time: {:.8f} seconds".format(elapsed_time))

    return result

###################### DO NOT TOUCH BELOW ######################
if __name__ == '__main__':

    import argparse
    parser = argparse.ArgumentParser(description='Argument parser')
    parser.add_argument('--input', '-i', default='./input', help='Input file path')
    parser.add_argument('--output', '-o', default='./output', help='Output file path')
    args = parser.parse_args()

    utils.output_checker(args.output)
    test_cases = utils.read_input(args.input)

    for test_case in test_cases:
        result = solution(test_case)
        utils.write_output(args.output, result)

    utils.compare_files(args.output)

이 코드는 다음과 같은 방식으로 동작합니다:
1. 숫자 카드로 주어진 목록을 집합으로 변환하여 탐색 속도를 높입니다.
2. 쿼리로 주어진 숫자가 카드 집합에 있는지를 확인하여 결과 리스트에 1 또는 0을 추가합니다.

이와 같이 해결하면 문제의 조건 안에서 주어진 입력에 대해 효율적으로 해결할 수 있습니다. 도움이 되셨기를 바랍니다!

Example of Input and Output for Problem 1

connor10님의 프로필 이미지
connor10
질문자

오류가 납니다..

connor10님의 프로필 이미지
connor10

작성한 질문수

질문하기