GitHunt
HI

HI-JIN2/1day-1solved

파이썬만 먹습니다

1일 1알고리즘

This is a auto push repository for Baekjoon Online Judge created with BaekjoonHub.

Repo Activity Graph

오답노트

파이썬
  • 입력 빠르게 받기

    import sys
    input = sys.stdin.readline()
  • sort

  • img_1.png

    • l.sort()는 원본 자체를 정렬
    • l2 = l.sorted()는 원본 그대로 두고 정렬
    • 버블정렬은 N^2 / sort는 nlogn
    • set은 n
  • enumerate()

    • 리스트 안에 있는걸 인덱스랑 같이 반환할 수 있음
    • for i, num in enumerate(nums):
  • for i, j in zip(survey, choices):

    • 두 리스트를 한번에 돌림
  • list(map(int,input().split())

  • set(list(a))

  • s.split()

    s = '10 20 Z 30'
    s = s.split() # s = ['10', '20', 'Z', '30']
  • popleft() = pop(0)

  • img.png

    from collections import deque
    a = deque()
    [a.append(i) for i in range(5)]
    a.pop() #deque([0, 1, 2, 3])
    
    
    b = deque()
    [b.append(i) for i in range(5)]
    b.popleft() #deque([1, 2, 3, 4])
  • 배열에 있는 값이 큰순서대로 인덱스 출력하기

    sorted_indexed_list = sorted(enumerate(per), key=lambda x: x[1], reverse=True)
    
    # 정렬된 결과에서 인덱스만 추출
    sorted_indices = [index + 1 for index, value in sorted_indexed_list]
  • dequeue 스택과 큐의 기능을 한 번에

  • 로또 파싱하기

    • replace("(","").replace(")","") 가 핵심
    data = [
        "1 2 3 4 5 (6)",
        "1 3 4 2 5 (7)"
    ]
    
    lotto_numbers = []
    for line in data:
        # 괄호 제거 후 분할
        parts = line.replace("(", "").replace(")", "").split()
        numbers = list(map(int, parts[:5]))
        bonus = int(parts[5])
        lotto_numbers.append((numbers, bonus))
    
    print(lotto_numbers)
  • str() int() 타입 변환 확실하게

  • 딕셔너리

    d = dict()
    d[a] = c
    
    sorted_dict = sorted(n.items(), key= lambda item:item[1], reverse=True) //딕셔너리 값으로 정렬
  • 피보나치 수열

    def solution(n):
      dp=[0,1] + [0]*n
    
      
      for i in range(2,n+1):
          dp[i] = dp[i-1]+dp[i-2]
  • sep="", end=""

  • DFS 깊이우선탐색-재귀

    graph = {
        1: [4,5],
        2: [3],
        3: [],
        4: [2,3],
        5: [4]
    }
    
    visited = [ False ] * (len(graph) +1)
    
    def dfs(current_node):
        visited[current_node] = True
        print(current_node)
    
        for i in graph[current_node]:
            if not visited[i]:
                dfs(i)
    
    dfs(1)
  • BFS 너비우선탐색-큐

    from collections import deque
    
    graph = {
        1: [4,5],
        2: [3],
        3: [],
        4: [2,3],
        5: [4]
    }
    
    
    def bfs(start_node):
        visited = [False] * (len(graph) +1)
    
        queue = deque([start_node])
        while queue:
            node = queue.popleft()
            print(node)
    
            for i in graph[node]:
                if not visited[i]:
                    queue.append(i)
                    visited[i] = True
    
    bfs(1)
  • 유기농배추

    #dfs
    import sys
    sys.setrecursionlimit(10000)
    from sys import stdin
    input = stdin.readline
    
    from collections import deque
    
    dx = [-1, 1, 0, 0]
    dy = [0, 0, -1, 1]
    
    t = int(input())
    for _ in range(t):
        m, n, k = map(int, input().split())
        graph = [[0 for _ in range(m)] for _ in range(n)]
    
        for _ in range(k):
            a, b = map(int, input().split())
            graph[b][a] = 1
    
        def dfs(x, y): #재귀
            graph[y][x] = 0  # 시작점 방문 처리
    
            for i in range(4):
                nx = x + dx[i]
                ny = y + dy[i]
    
                if nx < 0 or nx >= m or ny < 0 or ny >= n:
                    continue
    
                if graph[ny][nx] == 0:
                    continue
    
                if graph[ny][nx] == 1:
                    # graph[ny][nx] = 0  # 방문처리 안해도 됨
                    dfs(nx,ny)
    
        def bfs(x,y):
            queue = deque()
            queue.append((x,y))
            graph[y][x] = 0 #시작점 방문처리
    
            while queue:
                x,y = queue.popleft()
                for i in range(4):
                    nx = x + dx[i]
                    ny = y + dy[i]
    
                    if nx<0 or nx>=m or ny<0 or ny>=n:
                        continue
    
                    if graph[ny][nx]:
                        graph[ny][nx] = 0 #방문처리
                        queue.append((nx,ny))
    
    
    
        answer = 0
        for y in range(n):
            for x in range(m):
                if graph[y][x] == 1:
                    # dfs(x, y)
                    bfs(x,y)
                    answer += 1
        print(answer)
  • 시뮬레이션
    img.png

    (0,0)에서 시작. 좌측 상단
    
    move_type = ['L', 'R', 'U', 'D']
    dx = [0, 0, -1, 1]
    dy = [-1, 1, 0, 0]
    
    x,y =1,1
    data = list(input().split())
    
    for i in data:
        for t in range(len(move_type)):
            if i == move_type[t]:
                nx = x + dx[t] #초기화 안해도 파이썬은 가능
                ny = y + dy[t]
    
        if nx <1 or ny < 1 or nx >n or ny>n:
            continue
    
        x = nx
        y = ny
    
    • 알파벳 -> 숫자
      • 대문자 ord(문자) - ord('A') + 1
      • 소문자 ord(문자) - ord('a') + 1
    • f-string
      • print(f'나는{name}입니다') 이렇게 하면 name 자리에 name 변수 값이 들어감
    • .startswith()
      • numbers.startwith(target) numbers가 target으로 시작하면
    • 이중포문 O(N^2)-> 단일 포문 O(N)
      • 이중포문
           for i in range(len(numbers)-1):
              for j in range(1, len(numbers)):
                  numbers[i], numbers[j]
      • 단일 포문
           for i in range(len(numbers)-1):
                  numbers[i], numbers[i+1]
SQL
  • DATE_FORMAT(PUBLISHED_DATE,'%Y-%m-%d') as PUBLISHED_DATE
  • concat(1,km) -> 1km / round(1.343333, 2) -> 1.34까지 표기
    • concat(round(avg(D_BETWEEN_DIST),2),"km") as TOTAL_DISTANCE

Languages

Python95.4%Kotlin2.4%C++1.0%Java0.8%Ada0.2%Fortran0.1%JavaScript0.0%

Contributors

Created February 7, 2023
Updated March 21, 2026