Algorithm Study

    [백준 파이썬] # 15651 N과 M (3)

    Silver III # 15651 N과 M (3) 링크 : https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 풀이 N, M = map(int, input().split()) def dfs(depth, seq): if depth == M: print(' '.join(list(map(str, seq)))) return for i in range(1, N+1): seq.append(i) dfs(depth+1, seq) seq.pop() dfs(0, ..

    [백준 파이썬] # 15649 N과 M (1)

    Silver III # 15649 N과 M (1) 링크 : https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 풀이 N, M = map(int, input().split()) def dfs(depth, seq): if depth == M: print(' '.join(list(map(str, seq)))) for i in range(1, N+1): if i not in seq: temp = seq.copy() temp.append(i) dfs(de..

    [백준 파이썬] # 10809 알파벳 찾기

    Bronze II # 10809 알파벳 찾기 링크 : https://www.acmicpc.net/problem/10809 10809번: 알파벳 찾기 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출 www.acmicpc.net 풀이 S = list(input()) alphabet = list('abcdefghijklmnopqrstuvwxyz') li = [] for i in alphabet: if i in S: li.append(S.index(i)) else: li.append(-1) print(*li) 풀이 방법 alphabet을 정의한다 S에서 alp..

    [백준 파이썬] # 2675 문자열 반복

    Bronze II # 2675 문자열 반복 링크 : https://www.acmicpc.net/problem/2675 2675번: 문자열 반복 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다 www.acmicpc.net 풀이 T = int(input()) for i in range(T): R, S = input().split() P = '' for j in S: P += j*int(R) print(P) 풀이 방법 문자열 P를 이용한다. P에 문자를 추가하기 위해서 '+='를 이용한다. 후기 문자열로 받아 사용하면, 리스트에 append 후 프린트 하는 ..

    [백준 파이썬] # 7562 나이트의 이동

    Silver II # 7562 나이트의 이동 링크 : https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 풀이 from collections import deque def bfs(x, y): if (loc_x, loc_y) == (des_x, des_y): return 0 else: q = deque() q.append((x, y)) dx = [1, 2, 2, 1, -1, -2, -2, -1] dy = [2, 1, -1, -2, -2, -1, 1, ..

    [백준 파이썬] # 1697 숨바꼭질

    Silver I # 1697 숨바꼭질 링크 : https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 풀이 from collections import deque def bfs(n, k): q = deque([n]) while q: pop = q.popleft() if pop == k: return visited[pop] for i in [pop-1, pop+1, 2*pop]: if 0

    [자바의 정석] 기초편

    강의를 들으면서 기억해야 할 내용을 개인적으로 적어보았다 자바의 특징 배우기 쉬운 객체지향 언어 자동 메모리 관리 멀티 쓰레드를 지원 풍부한 라이브러리 운영체제에 독립적 자바 가상 머신(JVM) 자바 프로그램이 실행되는 가상 컴퓨터 한번 작성하면 어디서든 실행 (윈도우, OSX, Linux) 자바 API Java로 프로그램을 만드는데 필요한 주요 기능을 미리 만들어서 제공 www.oracle.com에서 압축파일을 다운받아 사용 단축키 목록 ctrl + shift + L : 단축키 전ㅊ체 목록 보기 ctrl + +/- : 폰트 크기 증가/감소 ctrl + d : 한줄 삭제 ctrl + alt + ↓ : 행단위 복사 ctrl + i : 자동 들여쓰기 ctrl + space : 자동완성 alt + shift ..

    [이코테 자료구조] 5. 이진 탐색

    이진 탐색 알고리즘 by 나동빈님 링크 https://www.youtube.com/watch?v=94RC-DsGMLo&t=319s 순차 탐색 : 리스트 안에 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 확인하는 방법 이진 탐색 : 정렬되어 있는 리스트에서 탐색 범위를 절반씩 좁혀가며 데이터를 탐색하는 방법 이진 탐색은 시작점, 끝점, 중간점을 이용해서 탐색 범위를 설정 단계마다 탐색 범위를 2로 나누는 것과 동일하므로 연산 횟수는 log2 N에 비례 이진 탐색은 탐색 범위를 절반씩 줄이며 시간복잡도는 O(logN)을 보장 소스코드 이진 탐색 : 재귀적 구현 # 이진 탐색 : 재귀적 구현 def binary_search(array, target, start, end): if start>end: r..

    [백준 파이썬] # 1158 요세푸스 문제

    Silver V # 1158 요세푸스 문제 링크 : https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 풀이 from collections import deque N, K = map(int, input().split()) queue = deque(list(range(1, N+1))) li = [] while queue: for i in range(K-1): pop = queue.popleft() queue.append(pop) insert = queue.popleft() li.append(insert) li = str(li).replace..

    [백준 파이썬] # 7569 토마토

    Silver I # 7569 토마토 링크 : https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 풀이 M, N, H = map(int, input().split()) house = [] floor = [] for k in range(H): floor = [list(map(int, input().split())) for i in range(N)] house.append(floor) ## from collections impor..