ABOUT ME

Today
Yesterday
Total
  • [99클럽] stack 기초, B2776
    알고리즘/코딩테스트 문제 정리 2025. 1. 13. 20:20

    코딩테스트

     


     

    🌱 문제 풀기 전 나의 생각

    1. stack을 먼저 떠올리게 된 문제이다. 이전에 stack을 해결할 때 간단하게 풀 수 있는 부분에 대해서는 list보다는 int를 이용해서 + -를 통해서 해결하면 더 쉽게 해결이 된다고 생각되어 이렇게 구현하고자 하였다.

    소요 시간: 10분

     


     

    🌳 파이썬 풀이 코드

    def solution(s):
        answer = True
        count = 0
        s = s.lower()
        for i in s:
            if i == 'p':
                count += 1
            elif i == 'y':
                count -= 1
            continue
        
        return count == 0
    • JS에서는 toLowerCase() 메서드를 활용하였었는데 python에서는 무슨 메서드인지 까먹었어서 이 부분에서 기억을 잘 해야겠다.

     

     


    백준 B2776

     


     

    🌱 문제 풀기 전 나의 생각

    1. 하나씩 조회를 하면서 찾으면 리소스가 많이들 것 같은데 이것을 개선할 수 있는 방법이 있는지 생각해보다가 잘 떠오르지 않아서 일단 구현을 먼저하고 나중에 다른 사람들의 답을 찾아보고자 하였음.
    2. 입출력 부분에서 백준에서 어떻게 받아야하는지 까먹어서 다시 찾아봐야겠음.
    3. 일단 받는 배열이 2개일텐데 하나는 중복을 제거해야하니깐 set()을 써보고 in을 통해서 간단하게 한 번 구현해보고자 하였음

    소요 시간: 30분

     


     

    🌳 파이썬 풀이 코드

    # 이전 코드
    import sys
    
    test_n = int(input())
    
    a, b, c, d = [sys.stdin.readline().split('\n')[0] for _ in range(test_n * 4)]
    
        
    
    def solution(a, b, c, d):
        a, b, c, d = int(a), set(map(int, b.split(" "))), int(c), list(map(int, d.split(" ")))
        print(a, b, c, d)
        for i in d:
            if i in b:
                print(1)
            else:
                print(0)
    
    solution(a, b, c, d)
    
    # 개선된 코드
    import sys
    
    test_n = int(input())
    
    # 입력값 읽기
    for _ in range(test_n):
        a = int(sys.stdin.readline().strip())
        b = set(map(int, sys.stdin.readline().strip().split()))
        c = int(sys.stdin.readline().strip())
        d = list(map(int, sys.stdin.readline().strip().split()))
        
        def solution(a, b, c, d):
            # a는 사용되지 않음 (단순 테스트 케이스 수)
            for i in d:
                if i in b:
                    print(1)
                else:
                    print(0)
    
        solution(a, b, c, d)
    • 처음에 입출력 받는 방식이 RunTime Error를 내길래 뭐가 문제일까 찾아보니 split("\n")[0] 여기 부분이 문제가 된다고 나왔다. 그래서 수정해보았다 - ChatGPT
    • 일단 읽을 때 예상한 입력 값의 개수와 실제 입력 값이 다를 경우 런타임 에러가 발생한다는데 정확히 왜 발생하는지는 모르겠다.
    • 일단 한꺼번에 받아서 하는 게 아니라 각각 받아야한다는 것만 알겠다.

     

     

    댓글

Designed by Tistory.