본문 바로가기

728x90

코딩테스트

(8)
코테 DFS 그래프 탐색 종류DFS : Depth-first search (깊이 우선 탐색) Stack자신의 자식이 우선 DFS는 재귀함수를 사용하기 위해함백트래킹에서 재귀함수 개념이 매우 중요 재귀함수자기 자신을 다시 호출하는 함수주의할점재귀함수가 종료되는 시점 반듯이 명시재귀함수의 깊이가 너무 깊어지면 Stack OverflowDFS, 백트래킹에서 주로 사용 (그중 백트리킹에 많이 사용됨)아이디어시작점에 연결된 Vertex 찾기연결된 Vertex를 계속해서 찾음(끝날 때 까지)더이상 연결된 Vertex 없을 경우 다음 노드 찾음시간복잡도알고리즘이 얼마나 오래 걸리는지DFS : O (V+E)검색할 그래프 : 2차원 배열방문여부 확인 : 2차원 배열(재방문 금지)Queue를 사용하지 않음백준 2667 그림 문제 1..
코테 BFS 그래프 탐색 종류BFS : Breadth-first search (너비 우선 탐색) : 자기 자식을 우선 탐색DFS : Depth-first search (깊이 우선 탐색) : 자식의 자식을 먼저 탐색 queue)= BFSstack = DFS 아이디어시작점에 연결된 vertex 찾기찾은 vertex를 queue에 저장queue 의 가장 먼저 것 뽑아서 반복queue는 파이프 같이 생각 자료구조, 들어온 순서대로 나가게 됨 -> 123123stack 은 한쪽이 막힌 파이트 같은 자료고조, 들어온 곳으로 나가게 됨 -> 123321 시간 복잡도시간 복잡도란? : 알고리즘이 얼마나 오래 걸리는지BFS : O( vertex +Edge) 라이브코딩아이디어 >2중 for -> 값 1 && 방문 X -> BFSBFS..
백준 2869 : 달팽이는 올라가고 싶다. 2869 달팽이는 올라가고 싶다.문제를 보고 바로 생각한것은 그냥 반복문 쓰면 빠르게 해결될 것이다? 라는 생각이였다.하지만 반복문으로 해본 결과 시간제한 1초가 나왔고, 문제에서는 시간제한이 0.25초 였던 것이다.a, b, v = map(int, input().split())x, y = 0, 0def func(a, b, v):    global x, y    while True:        y += 1        x += a        if x >= v:            return y        else:            x -= bprint(func(a, b, v))위 코드가 반복문을 사용해서 했던 코드이다.그럼 시간 초가 촉박한 문제들을 과거에는 어떻게 풀었을까?나의 경우는 시간초..
백준 1193 : 분수찾기 1193번 분수찾기문제에서 나열된 분수들이 지그재그 순서로 차례대로 1번, 2번, 3번,4번,... 분수라고 하였고, 첫 줄에 x(1아이디어문제에서 나온 순서를 토대로 배열을 만들면1/11/2, 2/13/1, 2/2, 1/31/4, 2/3, 3/2, 4/15/1, 4/2, 3/3, 2/4, 1/5...위와 같이 계속 반복되어 질 것이다.여기서 각 줄마다 특징을 알아보아야 한다!- 짝수 라인 : 분모가 1씩 늘어나고 분자가 1씩 줄어든다.- 홀수 라인 : 분자가 1씩 늘어나고 분모가 1씩 줄어든다.이제 규칙(특징)을 찾았으니까 몇번째 줄에 몇번째 위치의 분수가 무엇인지를 알아내야 한다. while num > line: num -= line line += 1 while문의 loop를 사용해 몇번째 줄이고 몇..
백준 1062번 가르침 https://www.acmicpc.net/problem/1062 - 이번에는 완전 탐색의 유연한 생각에 대표 문제인 골드 5티어 가르침 문제를 풀어보았습니다.- 최근 공부하고 있는 알고리즘 관련해서 뼈대라 할 수 있는 문제의 대표격이라 풀어보았는데 생각보다 시간이 많이 걸려서 좀 당황했습니다.###### 접근- 조건 처리를 잘 해야 빠르게 정답을 찾을 수 있었던 문제 였던 것 같습니다.- n개의 단어와 k(배울 수 있는 알파벳 개수)를 입력받고, 어떤 조합으로 k개의 알파벳을 익혀야 최대한 많이 단어를 읽을 수 있는지에 대한 문제인데, 단어는 anta 로 시작해서 tica 로끝나는 형태인 것입니다. 즉 anta ? tica 이 순이 되는 것입니다.###### 풀이순서- 단어 입력 및 필수 글자 처리: ..
백준 2903번 중앙 이동 알고리즘 https://www.acmicpc.net/problem/2903규칙에 따라 점의 개수를 구해야 하는 문제 였는데1. 정사각형의 각 변의 중아엥 점을 하나 추가2. 정사각형의 중심에 점을 하나 추가문제에 흰점과 검은 점이 섞여있어서 어렵게 느껴졌었는데, 색 구분 없이 보게 되면 완전하게 점으로 채워진 정사각형이 보이게 된다. 이를 통해서 변의 길이만 알게 되면 점의 개수를 구할 수 있다 판단하였다.처음 변의 길이가 2 였고, 다음은 3, 5로 증가한다. 다음은 점 5개 사이에 점이 1개씩 추가되므로, 변의 길이는 9가 되어진다. 여기서 알 수 있듯이 (이전 변의 길이 -1) 만큼씩 변의 길이가 늘어나고 있는 것이다.초기 21회 2 + 1 = 32회 3 + 2 = 53회 5 + 4 = 94회 9 + 8 =..
백준 2720번 세탁소 사장 동혁 문제 풀이 https://www.acmicpc.net/problem/2720 문제 요약: 주어진 금액을 동전(쿼터, 다임, 니켈, 페니)으로 바꿀 때, 각 동전의 개수를 구하는 문제입니다.기본 풀이먼저, 기본적인 접근 방식은 다음과 같습니다Z = int(input()) for a in range(Z):     C = int(input())     for i in [25, 10, 5, 1]:         count = C // i           print(count, end=" ")           C = C % i       print() - 어차피 금액 단위가 정해져 있으니, 큰 단위부터 몫을 반환하고 나머지를 다시 금액으로 할당, 이 과정을 반복하면 되는 문제였다.- 처음에는 반복 과정에서 for문을 쓰..
백준 2745번 진법변환문제 https://www.acmicpc.net/problem/2745  파이썬에서의 자료구조여러개의 데이터가 묶여있는 자료형을 컨테이너 자료형이라함. 이러한 컨테이너 자료형의 데이터 구조를 자료 구조.리스트 :순서가 있는 가변적인 데이터 구조, 리스트는 같은 타입이 아니어도 다양한 데이터 타입의 요소를 포함할 수 있으며, 요소를 수정하거나 삭제할 수 있음 []튜플 : 순서가 있는 불변의 데이터 구조, 한 번 정의되면 요소를 변경하거나 삭제할 수 없습니다. 다양한 데이터 타입을 포함할 수 있음 ()딕셔너리 : 키와 값의 쌍으로 구성된 데이터 구조, 각 키는 유일해야 하며, 키를 통해 해당 값을 빠르게 조회할 수 있으며, 키와 값 모두가 변할 수 있음 {}셋트 : 순서가 없고, 중복된 데이터가 허용되지 않는 데..

728x90