본문 바로가기

전체 글

(426)
[Algorithm] [Python] BOJ/백준 - 2164_카드2 2164 카드2 문제 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 한 장 남을 때까지 반복하게 된다. 우선, 제일 위에 있는 카드를 바닥에 버린다. 그 다음, 제일 위에 있는 카드를 제일 아래에 있는 카드 밑으로 옮긴다. 예를 들어 N=4인 경우를 생각해 보자. 카드는 제일 위에서부터 1234 의 순서로 놓여있다. 1을 버리면 234가 남는다. 여기서 2를 제일 아래로 옮기면 342가 된다. 3을 버리면 42가 되고, 4를 밑으로 옮기면 24가 된다. 마지막으로 2를 버리고 나면, 남는 카드는 4가 된다. N이 주어졌을 때, 제일 마지막에 남게 되는 카..
[Algorithm] [Python] 백준/BOJ - 10845_큐 10845 큐 문제 정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오. 명령은 총 여섯 가지이다. push X: 정수 X를 큐에 넣는 연산이다. pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. size: 큐에 들어있는 정수의 개수를 출력한다. empty: 큐가 비어있으면 1, 아니면 0을 출력한다. front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다. ###입력 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)..
DFS Concept & Implementation DFS (Depth Frist Search) 1. 개념 파이썬 DFS 구현 스택을 사용하여 구현 아래와 같은 그래프 예시를 통한 DFS 시뮬레이션 출력 기존 입력 새로운 입력 ( 자손 ) A A B C D D B C H I I B C H K L L B C H K K B C H H B C C B G G B B E F F E J J E E 탐색 결과 : A -> D -> I -> L -> K -> H -> C -> G -> B -> F -> J -> E 2. 구현 graph = { 'A' : set(['B', 'C', 'D']), 'B' : set(['A', 'E', 'F']), 'C&#..
BFS Concept & Implementation BFS (Breath First Search) 1. 개념 파이썬 BFS 구현 큐를 사용하여 구현 아래와 같은 그래프 예시를 통한 BFS 시뮬레이션 출력 기존 입력 새로운 입력 ( 자손 ) A A B C D B C D E F C D E F G D E F G H I E F G H I F G H I J G H I J H I J I J K L J K L K L L 탐색 결과 : A -> B -> C -> D -> E -> F -> G -> H -> I -> J -> K -> L 2. 구현 graph = { 'A' : set(['B', 'C', 'D']), 'B' : set(['A', 'E', 'F'..
BFS&DFS DFS & BFS 개념과 구현 탐색 알고리즘과 자료구조, 직관적으로 이해하기 DFS, BFS 등의 용어는 컴퓨터공학 계열 전공자 또는 개발 관련 공부를 진행해본 사람들이라면 한 번씩은 모두들 들어보았을 것이다. 들어보긴 들어봤으나, 그 개념과 구현은 생각보다 쉽지만은 않다. 이들을 탐색할 때 쓰이는 트리와 스택 또는 큐와 같은 자료구조까지 알아야 할 것들이 너무 많기도 할 뿐더러 이러한 알고리즘을 처음 접할때는 왜 stack queue등이 필요한지 잘 와닿지 않는다. 이것부터 알아보도록 하자! 자료구조가 왜 필요해? 한 예시를 들어보자. 어떠한 게임을 진행하면서 가능한 모든 경우의 수들을 생각해보고, 그 이후의 경우의 수도 모두 확인해보고자 할 때 우리는 기억에 용이함을 위하여 메모지에 메모 또는 머리속..
[Algorithm] [Python] 백준/BOJ - 10814_나이순 정렬 10814 나이순 정렬 문제 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다. 출력 첫째 줄부터 총 N개의 줄에 걸쳐 온라인 저지 회원을 나이 순, 나이가 같으면 가입한 순으로 한 줄에 한 명씩 나이와 이름을 공백으로..
[Alogorithm] [Python] 백준/BOJ - 11651_좌표 정렬하기2 11651 좌표 정렬하기 2 문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. 1차 제출 코드 import sys N = int(sys.stdin.readline()) arr = [] for _ in range(N): arr.append(list(map(int, sys.stdin.readl..
lambda #Lambda Lambda는 함수를 간단하게 사용할 수 있도록 도와준다. 이는 이름이 없는 함수, 익명함수라고 하기도 한다. 이는 함수형 프로그래밍 언어에서의 lambda 와 정확히 똑같은 것은 아니지만, 파이썬 내에서 잘 통합되어 있으며 filter(), map(), reduce() 와 같은å 전형적인 기능 개념과 함께 사용되는 강력한 함수이다. lambda는 쓰고 버리는 일시적인 함수이다. 즉, 함수가 생성된 곳에서만 사용이 가능하다. lambda 인자리스트 : 표현식 g = lambda x: x**2 print(g(8)) #64 f = lambda x,y : x+y print(f(4,4)) #8 람다의 정의에는 return 문이 포함되어 있지 않다. 반환값을 만드는 표현식이 포함되어 있다. 함수가 ..