반응형

분류 전체보기 269

[파이썬] 단계별 백준 문제 풀기 - 11053 동적계획법 (가장 긴 증가하는 부분 수열)

문제 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 입력 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) 출력 첫째 줄에 수열 A의 가장 긴 증가하는 부분 수열의 길이를 출력한다. import sys n = int(sys.stdin.readline()) #수열의 크기 arr = list(map(int,sys.stdin.readline().split())) #주어지는 수열 리스트..

알고리즘 2021.03.12

[파이썬] 단계별 백준 문제 풀기 - 2606 DFS와 BFS (바이러스)

문제 신종 바이러스인 웜 바이러스는 네트워크를 통해 전파된다. 한 컴퓨터가 웜 바이러스에 걸리면 그 컴퓨터와 네트워크 상에서 연결되어 있는 모든 컴퓨터는 웜 바이러스에 걸리게 된다. 예를 들어 7대의 컴퓨터가 과 같이 네트워크 상에서 연결되어 있다고 하자. 1번 컴퓨터가 웜 바이러스에 걸리면 웜 바이러스는 2번과 5번 컴퓨터를 거쳐 3번과 6번 컴퓨터까지 전파되어 2, 3, 5, 6 네 대의 컴퓨터는 웜 바이러스에 걸리게 된다. 하지만 4번과 7번 컴퓨터는 1번 컴퓨터와 네트워크상에서 연결되어 있지 않기 때문에 영향을 받지 않는다. 어느 날 1번 컴퓨터가 웜 바이러스에 걸렸다. 컴퓨터의 수와 네트워크 상에서 서로 연결되어 있는 정보가 주어질 때, 1번 컴퓨터를 통해 웜 바이러스에 걸리게 되는 컴퓨터의 수..

알고리즘 2021.03.12

[파이썬] 단계별 백준 문제 풀기 - 1021 큐 (회전하는 큐)

문제 지민이는 N개의 원소를 포함하고 있는 양방향 순환 큐를 가지고 있다. 지민이는 이 큐에서 몇 개의 원소를 뽑아내려고 한다. 지민이는 이 큐에서 다음과 같은 3가지 연산을 수행할 수 있다. 첫 번째 원소를 뽑아낸다. 이 연산을 수행하면, 원래 큐의 원소가 a1, ..., ak이었던 것이 a2, ..., ak와 같이 된다. 왼쪽으로 한 칸 이동시킨다. 이 연산을 수행하면, a1, ..., ak가 a2, ..., ak, a1이 된다. 오른쪽으로 한 칸 이동시킨다. 이 연산을 수행하면, a1, ..., ak가 ak, a1, ..., ak-1이 된다. 큐에 처음에 포함되어 있던 수 N이 주어진다. 그리고 지민이가 뽑아내려고 하는 원소의 위치가 주어진다. (이 위치는 가장 처음 큐에서의 위치이다.) 이때, 그..

알고리즘 2021.03.12

[파이썬] 단계별 백준 문제 풀기 - 1874 스택수열

문제 스택 (stack)은 기본적인 자료구조 중 하나로, 컴퓨터 프로그램을 작성할 때 자주 이용되는 개념이다. 스택은 자료를 넣는 (push) 입구와 자료를 뽑는 (pop) 입구가 같아 제일 나중에 들어간 자료가 제일 먼저 나오는 (LIFO, Last in First out) 특성을 가지고 있다. 1부터 n까지의 수를 스택에 넣었다가 뽑아 늘어놓음으로써, 하나의 수열을 만들 수 있다. 이때, 스택에 push하는 순서는 반드시 오름차순을 지키도록 한다고 하자. 임의의 수열이 주어졌을 때 스택을 이용해 그 수열을 만들 수 있는지 없는지, 있다면 어떤 순서로 push와 pop 연산을 수행해야 하는지를 알아낼 수 있다. 이를 계산하는 프로그램을 작성하라. 입력 첫 줄에 n (1 ≤ n ≤ 100,000)이 주어..

알고리즘 2021.03.11

[파이썬] 단계별 백준 문제 풀기 - 4949 스택 (균형잡힌 세상)

문제 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단하는 프로그램을 짜는 것이다. 문자열에 포함되는 괄호는 소괄호("()") 와 대괄호("[]")로 2종류이고, 문자열이 균형을 이루는 조건은 아래와 같다. 모든 왼쪽 소괄호("(")는 오른쪽 소괄호(")")와만 짝을 이뤄야 한다. 모든 왼쪽 대괄호("[")는 오른쪽 대괄호("]")와만 짝을 이뤄야 한다. 모든 오른쪽 괄호들은 자신과 짝을 이룰 수 있는 왼쪽 괄호가 존재한다. 모든 괄호들의 짝은 1:1 매칭만 가능하다. 즉, 괄호 하나가 둘 이상의 괄호와 짝지어지지 않는다. 짝을 이루는 두 괄호가 있을 때, 그 사이에 있..

알고리즘 2021.03.11

[일지] 알고리즘 코딩테스트 전략 & 적절한 공부법

약 7일간 백준 알고리즘 문제를 풀면서 엄청난 좌절감을 느꼈다. 좌절감의 이유는 써보니까 너무 많다. 1) 파이썬 문법이 익숙지 않음 2) 알고리즘 푸는데 관련한 이론을 모름(재귀함수, 이분탐색, 스택, 큐 등) 3) 1)과 2)가 아주 조화롭게 버무려져 구현력 zero 4) 답지 이해능력 제로 1시간동안 알고리즘 튜터님의 공부 tip을 간략하게 기록해보자! 알고리즘 공부방법 재밌는것을 계속 풀어서 성취감을 느끼자. 백준 말고도 프로그래머스같은 다른 코테 플랫폼을 둘러보는 것을 추천한다. 낮은 레벨부터 풀어가면서 단계별로 공부를 하자 이론을 모르면 절대 못푼다. 알고리즘을 풀겠다 라기 보다는 알고리즘을 풀기 위한 개념을 공부하겠다는 느낌으로 접근하자 머리로만 하지말고 그려라.. 나의 아이패드는 낙서장이 ..

[React] 리액트 튜터님의 Q&A 모음

1주차 수요일, 리액트 튜터님이 2시간동안 질문을 받아주셨다. 프론트엔드 개발자 지망생으로써 리액트가 너무 궁금하기도 했고, 나도 질문을 몇개 준비해서 갔다. 다들 리액트가 사실 무엇인지 잘 모른채로 질문해서 너무 기본적인 질문들 위주지만, 그래도 다시한번 기억하고자 기록하려한다! 나중에 FE 개발자가 되고 이 질문들을 읽으면 나도 답할 수 있는 실력이 되겠지? 그 때쯤 이 글을 되돌아보면 재밌겠다!! 1) React를 선택하신 계기와 장점은 무엇인가요? - 프론트엔드 라이브러리 중 가장 컴포넌트 친화적이며, 개발자가 자유롭게 이것저것 구현할 수 있다. 2) React native와의 차이점은 무엇인가요? - 문법은 거의 같지만 React는 웹, React native는 앱용으로 나온다. 보통 두개를 같..

[파이썬] 단계별 백준 문제 풀기 - 11729 재귀함수 (하노이 탑 이동 순서)

문제 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 옮기려 한다. 한 번에 한 개의 원판만을 다른 탑으로 옮길 수 있다. 쌓아 놓은 원판은 항상 위의 것이 아래의 것보다 작아야 한다. 이 작업을 수행하는데 필요한 이동 순서를 출력하는 프로그램을 작성하라. 단, 이동 횟수는 최소가 되어야 한다. 아래 그림은 원판이 5개인 경우의 예시이다. 입력 첫째 줄에 첫 번째 장대에 쌓인 원판의 개수 N (1 ≤ N ≤ 20)이 주어진다. 출력 첫째 줄에 옮긴 횟수 K를 출력한다. 두 번째 줄부터 수행 과정을 출력한다. 두 번째 줄부터 K개의 줄에 걸쳐 두 정수 A B를 빈..

알고리즘 2021.03.10

[파이썬] 단계별 백준 문제 풀기 - 2805 이분탐색 (나무 자르기)

문제 상근이는 나무 M미터가 필요하다. 근처에 나무를 구입할 곳이 모두 망해버렸기 때문에, 정부에 벌목 허가를 요청했다. 정부는 상근이네 집 근처의 나무 한 줄에 대한 벌목 허가를 내주었고, 상근이는 새로 구입한 목재절단기를 이용해서 나무를 구할것이다. 목재절단기는 다음과 같이 동작한다. 먼저, 상근이는 절단기에 높이 H를 지정해야 한다. 높이를 지정하면 톱날이 땅으로부터 H미터 위로 올라간다. 그 다음, 한 줄에 연속해있는 나무를 모두 절단해버린다. 따라서, 높이가 H보다 큰 나무는 H 위의 부분이 잘릴 것이고, 낮은 나무는 잘리지 않을 것이다. 예를 들어, 한 줄에 연속해있는 나무의 높이가 20, 15, 10, 17이라고 하자. 상근이가 높이를 15로 지정했다면, 나무를 자른 뒤의 높이는 15, 15..

알고리즘 2021.03.10

[파이썬] 단계별 백준 문제 풀기 - 11651 정렬 (좌표정렬하기 2)

문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. import sys #시간을 줄이기 위해 sys 모듈을 import하고 input값을 sys.stdin.readlind()으로 받음 n = int(input()) #첫째줄 점의 갯수 arr = [] # 점의 좌표들을 넣을 빈 리스트 생성 #..

알고리즘 2021.03.10