문제 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 벽 또는 빈 칸이다. 청소기는 바라보는 방향이 있으며, 이 방향은 동, 서, 남, 북중 하나이다. 지도의 각 칸은 (r, c)로 나타낼 수 있고, r은 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로 부터 떨어진 칸의 개수이다. 로봇 청소기는 다음과 같이 작동한다. 1. 현재 위치를 청소한다. 2. 현재 위치에서 현재 방향을 기준으로 왼쪽방향부터 차례대로 탐색을 진행한다. a. 왼쪽 방향에 아직 청소하지 않은 공간이 존재한다면, 그 방향으로 회전한 다음 한 칸을 전진하고 1번부터 진행한다. ..
문제 라면 공장에서는 하루에 밀가루를 1톤씩 사용합니다. 원래 밀가루를 공급받던 공장의 고장으로 앞으로 k일 이후에야 밀가루를 공급받을 수 있기 때문에 해외 공장에서 밀가루를 수입해야 합니다. 해외 공장에서는 향후 밀가루를 공급할 수 있는 날짜와 수량을 알려주었고, 라면 공장에서는 운송비를 줄이기 위해 최소한의 횟수로 밀가루를 공급받고 싶습니다. 현재 공장에 남아있는 밀가루 수량 stock, 밀가루 공급 일정(dates)과 해당 시점에 공급 가능한 밀가루 수량(supplies), 원래 공장으로부터 공급받을 수 있는 시점 k가 주어질 때, 밀가루가 떨어지지 않고 공장을 운영하기 위해서 최소한 몇 번 해외 공장으로부터 밀가루를 공급받아야 하는지를 반환하시오. dates[i]에는 i번째 공급 가능일이 들어있으..
자료구조 알고리즘 원격 강의 진도 나가기 힙 데이터에서 최대값과 최소값을 빠르게 찾기 위해 고안된 완전 이진 트리(Complete Binary Tree) 최댓값이 맨 위인 힙은 Max Heap, 최솟값이 맨 위인 힙은 Min Heap 원소 추가, 삭제의 시간 복잡도 O(log(N)) 그래프 연결되어 있는 정점와 정점간의 관계를 표현할 수 있는 자료구조 노드(Node): 각 데이터/간선(Edge): 관계를 표시한 선/인접 노드(Adjacent Node): 직접 연결된 노드 간선의 방향이 있으면 유방향 그래프(Directed Graph), 없으면 무방향 그래프(Undirected Graph) 인접 행렬(Adjacency Matrix, 시간 유리), 인접 리스트(Adjacnecy List, 공간 유리)로 표현..
The four Fs FACTS 파이썬 문법 기초 원격 강좌 완강 자바스크립트 올인원 강좌 완강 자료구조 알고리즘 원격 강좌 수강 HTTP/HTTPS 특강 수강 FEELINGS 파이썬이나 자바스크립트 언어에 대한 기본적인 문법은 이미 어느 정도 알고 있었기 때문에 빠르게 복습하고, 알고리즘에 대한 이해를 위해 많은 시간을 쏟았다.꾸준히 알고리즘 문제 연습을 하고 있었다고 생각했는데, 아직 많이 부족함을 느꼈다. FINDINGS 시간 복잡도, 공간 복잡도, 점근 표기법 개념을 익힘 배열, 링크드리스트, 스택, 큐, 해쉬 테이블, 트리 자료구조 개념을 익힘 버블 정렬, 선택 정렬, 삽입 정렬 개념을 익힘 HTTP, HTTPS 관련 CS 지식을 익힘 FUTURE 알고리즘 공부는 단순 암기가 아닌 다양한 예제를..
문제 링크 11051번: 이항 계수 2 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 1,000, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 문제 풀이 from math import factorial n, k = map(int, input().split()) print(factorial(n) // (factorial(k) * factorial(n - k)) % 10007) *key point: 11050번 문제에서 나머지 계산만 추가해준다.
문제 링크 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 문제 풀이 from math import factorial n, k = map(int, input().split()) print(factorial(n) // (factorial(k) * factorial(n - k))) *key point: math 라이브러리의 factorial 함수를 활용한다. 이항 계수는 아래의 공식으로 구해진다.
자료구조 & 알고리즘 특강 (강창민 튜터님) 스택 LIFO(Last In First Out)의 성격을 가진 선형 자료구조 반복문에서 종료 조건을 지정하지 않거나 잘못된 종료조건을 지정하여 무한 루프가 발생하면 메모리의 스택영역이 쌓이고 쌓이다 터짐 → StackOverflow 역순의 성질을 사용해야될 때 유용한 구조 대표적인 기능: 픽(peek), 푸시(push), 팝(pop) 큐 FIFO(First In First Out)의 성격을 가진 선형 자료구조 대표적인 기능: 픽(peek), 삽입(enqueue), 뽑기(dequeue) 버블 정렬 첫 번째 자료와 두 번째 자료를, 두 번째 자료와 세 번째 자료를, 세 번째와 네 번째를, … 이런 식으로 (n-1)번째 자료와 n번째 자료를 비교하여 교환하면서 자료..
문제 링크 1934번: 최소공배수 두 자연수 A와 B에 대해서, A의 배수이면서 B의 배수인 자연수를 A와 B의 공배수라고 한다. 이런 공배수 중에서 가장 작은 수를 최소공배수라고 한다. 예를 들어, 6과 15의 공배수는 30, 60, 90등이 있 www.acmicpc.net 문제 풀이 t = int(input()) for _ in range(t): a, b = map(int, input().split()) result = a * b while b > 0: a, b = b, a % b print(result // a) *key point: 두 수의 곱을 유클리드 호제법으로 구한 최대공약수로 나누어 준다.
문제 링크 5086번: 배수와 약수 각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다. www.acmicpc.net 문제 풀이 while 1: a, b = map(int, input().split()) if a == 0 and b == 0: break if b % a == 0: print('factor') elif a % b == 0: print('multiple') else: print('neither') *key point: 두 수를 서로 나누어 나머지가 0인 경우에 따라 case를 나누어 주면 된다.
- Total
- Today
- Yesterday
- MySQL
- 2738
- til
- 벡준
- 항해 플러스
- SQL
- 13241
- 24313
- 항해+
- 25192
- 2587
- programmer
- 25501
- Python
- Wil
- 10807
- 2903
- 5597
- Programmers
- 백준
- 4134
- 24060
- 20920
- 코육대
- 26069
- 2053
- 1269
- 13909
- 24723
- 17103
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |