[BaekJoon Online Judge] 2178 – 미로 탐색 문제 https://www.acmicpc.net/problem/2178 N×M크기의 배열로 표현되는 미로가 있다. 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 1 1 미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, […]
[BaekJoon Online Judge] 9095 – 1, 2, 3 더하기
BaekJoon Online Judge 9095: 1, 2, 3 더하기 문제 https://www.acmicpc.net/problem/9095 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 테스트 […]
[BaekJoon Online Judge] 11727 – 2Xn 타일링 2
BaekJoon Online Judge 11727: 2Xn 타일링 2 문제 https://www.acmicpc.net/problem/11727 2×n 직사각형을 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 소스코드 n = int(input()) d […]
[BaekJoon Online Judge] 11726 – 2Xn 타일링
BaekJoon Online Judge 11726: 2Xn 타일링 문제 https://www.acmicpc.net/problem/11726 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 소스코드 n […]
[BaekJoon Online Judge] 1463 – 1로 만들기
BaekJoon Online Judge 1463: 1로 만들기 문제 https://www.acmicpc.net/problem/1463 정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. X가 3으로 나누어 떨어지면, 3으로 나눈다. X가 2로 나누어 떨어지면, 2로 나눈다. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력 첫째 줄에 […]
[Algorithm] Merge Sort
Python으로 구현한 Merge Sort 분할정복 (Divide & Conquer) 기법을 이용하여 정렬한다. 주어진 리스트를 원소의 갯수가 1인 리스트가 될 때까지 분할한 뒤 그 리스트들을 다시 합치는 과정에서 원소를 비교하여 정렬을 수행한다. 소스코드 vi sort.py # Merge Sort def sort_merge(arr): if len(arr)<=1: return arr ## Exception ## Divide left = sort_merge(arr[:len(arr)//2]) right = sort_merge(arr[len(arr)//2:]) ## Conquer i,j,k […]
[Linux] How to Upgrade Ubuntu
업데이트 목록 갱신 sudo apt-get update 현재 패키지 업그레이드 sudo apt-get upgrade 신규 업데이트 설치 sudo apt-get dist-upgrade
[Algorithm] Edit Distance
Edit Distance 편집 거리(Edit Distance) 알고리즘에 대해 알아보고 Python으로 Edit Distance 알고리즘을 구현해본다. ‘KITTEN’과 ‘SITTING’ 문자열 비교 편집 거리(Edit Distance)는 어떤 문자열을 다른 문자열로 바꾸기 위해 필요한 연산의 최소 횟수를 뜻한다. 한 문자열에 대해 삽입, 삭제, 변경의 연산을 몇 번에 걸쳐 바꿀 수 있는지를 기준으로 두 비교 대상의 유사도를 판단한다. ‘KITTEN’과 ‘SITTING’을 비교한다고 했을 때, […]
[Python] Memoization을 이용한 Fibonacci
Fibonacci using Memoization Legacy Fibonacci def fibo(n): return n if n < 2 else fibo(n-2) + fibo(n-1) def Main(): number = int(input(“Enter integer: “)) print(fibo(number)) if __name__==’__main__’: Main() Fibonacci using Memoization __fibo_cache = {} def fibo(n): if n in __fibo_cache: return __fibo_cache[n] else: __fibo_cache[n] = n if n < 2 else fibo(n-2) + fibo(n-1) return […]
[Algorithm] Python으로 구현한 sort
[Algorithm] Python으로 구현한 sort Python은 list 자료형에 대해 sort 메소드를 기본적으로 제공하지만 필요에 따라 직접 구현할 필요도 있고, 또 Python 언어와 알고리즘 이해를 위해 작성한다. 오름차순 정렬 list_data.sort() 내림차순 정렬 list_data.sort(reverse=True) Sort Basic 선택 정렬 (Selection Sort) 삽입 정렬 (Insertion Sort) 거품 정렬 (Bubble Sort) 퀵 정렬 (Quick Sort) 선택 정렬 (Selection Sort) selection sort는 […]