211226 일 Algorithms TIL

bongf·2021년 12월 26일
0

알고리즘TIL

목록 보기
43/153

유형별 문제풀이 tony - 트리

백준 1991번 트리 순회 실버1

  • 문제
  • 코드
  • 0415 다시풀 때 string 합치는 방식이 아니라 배열에 append하는 방식으로 풀었는데 배열 요소 추가가 더 시간과 메모리가 많이 잡아 먹는다
  • 배열로 풀었을 때 (아래)
import sys

input = sys.stdin.readline
N = int(input().rstrip())

graph = dict()
for _ in range(N):
    p, chl, chr = input().split()
    graph[p] = (chl, chr)

def preorder(node, arr):
    arr.append(node)
    if graph[node][0] != ".":
        arr = preorder(graph[node][0], arr)
    if graph[node][1] != ".":
        arr = preorder(graph[node][1], arr)
    return arr

def inorder(node, arr):
    if graph[node][0] != ".":
        arr = inorder(graph[node][0], arr)
    arr.append(node)
    if graph[node][1] != ".":
        arr = inorder(graph[node][1], arr)
    return arr

def postorder(node, arr):
    if graph[node][0] != ".":
        arr = postorder(graph[node][0], arr)
    if graph[node][1] != ".":
        arr = postorder(graph[node][1], arr)
    arr.append(node)
    return arr

for e in preorder("A", []):
    print(e, end="")
print()


for e in inorder("A", []):
    print(e, end="")
print()

for e in postorder("A", []):
    print(e, end="")

유형별 문제풀이 tony - 자료구조

백준 10828번 스택

  • 04.07 업데이트
  • 문제
  • 코드
  • 배열을 사용한 것이 스택을 직접 구현한 것보다 빨랐다

카카오 lev2 프로그래머스

  • 처음에 #처리를 안해줘서 틀렸다.
  • 1분당 하나의 음이 재생되므로 시간에 비례해서 음의 수를 계산해야 했는데 들어온 문자열의 길이 자체로 계산하여 예를들어 A#의 경우 사실 한 음인데 두 글자라 두 음처리 되어 틀렸다
  • # 처리를 해줬지만 테스트케이스 12번이 계속 틀렸는데 이유를 알 수 없어 질문 하기의 다른 분이 작성하신 것을 보고 "A#"을 "a" 로 새로운 문자열을 변환해주고 풀었더니 정답이었다

방금그곡

푼 것 배운 것

파이썬 find(), count()

find()

해당 문자열이 기준 문자열에 있는지 확인하고 인덱스를 반환한다
없을 시에는 -1을 반환한다

string = "ABC"
basic = "1ABC"
print(basic.find(string)) # 1 

count()

해당 문자열이 몇 개 있는지 세준다

string = "ABC"
basic = "ABCABC"
print(basic.count(string)) # 2
profile
spring, java학습

0개의 댓글