aiccstudy Blog

프로그래머스 문제 풀이 본문

기타

프로그래머스 문제 풀이

aiccstudy 2024. 9. 25. 11:24

-파이썬 공부 

1.올바른 괄호 

def is_pair(s):
    st = list()
    for c in s:
        if c == '(':
            st.append(c)

        if c == ')':
            try:
                st.pop()
            except IndexError:
                return False

    return len(st) == 0


# 아래는 테스트로 출력해 보기 위한 코드입니다.
print( is_pair("(hello)()"))
print( is_pair("()()()"))

 

2.혼자놀기

def solution(cards):
    answer = []
    for i in range(len(cards)):
        tmp = []
        while cards[i] not in tmp:
            tmp.append(cards[i])
            i = cards[i] - 1
        answer.append([] if sorted(tmp) in answer else sorted(tmp))
    answer.sort(key=len)

    return len(answer[-1]) * len(answer[-2])

 

3.가장 먼 노드 

from collections import deque

def solution(n, vertex):
    # 그래프를 인접 리스트로 구성
    graph = [[] for _ in range(n+1)]
    for v in vertex:
        graph[v[0]].append(v[1])
        graph[v[1]].append(v[0])

    # BFS를 위한 큐와 거리 배열
    distances = [-1] * (n + 1)  # 모든 노드의 거리를 -1로 초기화 (방문하지 않은 상태)
    distances[1] = 0  # 1번 노드의 거리는 0
    queue = deque([1])

    # BFS 탐색
    while queue:
        current = queue.popleft()
        for neighbor in graph[current]:
            if distances[neighbor] == -1:  # 아직 방문하지 않은 노드
                distances[neighbor] = distances[current] + 1
                queue.append(neighbor)
    
    # 가장 멀리 떨어진 노드들 찾기
    max_distance = max(distances)
    return distances.count(max_distance)

 

 

'기타' 카테고리의 다른 글

현황  (0) 2025.02.19
자바스크립트 문제 lv0  (0) 2024.08.07