반응형

슬기로운 개발자생활 55

[DFS/BFS] 감시 피하기 (BAEKJOON - 18428)

1. 문제 T는 선생님 S는 학생 벽(W) 3개를 세워서 감시를 피할 수 있으면 YES를 출력, 아니면 NO 출력 2. 입력 # SET - 1 5 X S X X T T X S X X X X X X X X T X X X X X T X X # SET -2 4 S S S T X X X X X X X X T T T X 3. 출력 # SET - 1 YES # SET - 2 NO 4. 풀이 N이 3~6으로 맵 크기가 작기 때문에 완전탐색도 가능하다. 선생님의 감시를 피할 수 있는지 확인하는 부분이 조금 다를 뿐 벽을 세우면서 (dfs를 돌리면서) 벽이 3개일 때, 선생님의 감시를 피할 수 있는지 체크 여기서 가능하다면 최종적으로 True를 들고가면된다. 지금은 풀이가 잘 이해되는데 다른거 공부하다가 까먹을까봐 기록..

[DFS/BFS] 연산자 끼워 넣기 (BAEKJOON 14888번)

1. 문제 숫자가 N만큼 주어지고 연산자가 N-1개 만큼 주어졌을 대 최대값, 최소값을 출력하라. 연산자 순서는 + - * / 순이다. 나눌땐 몫만 취할 것 (음수를 나눌 경우 양수로 나눈 뒤 - 붙임) 2. 입력 # SET - 1 2 5 6 0 0 1 0 # SET - 2 3 3 4 5 1 0 1 0 # SET - 3 6 1 2 3 4 5 6 2 1 1 1 3. 출력 # SET - 1 30 30 # SET - 2 35 17 # SET -3 54 -24 4. 풀이 예전에 풀때는 완전탐색으로 permutation을 사용해 풀었지만, 조금 공부하고나니 DFS로 푸는 방법이 보였다. 마치 친구와 당구를 하면서, 맨날 당구비를 내다보니 길이보이는 느낌이랄까.. 근데 중요한건 아직 시야가 편협하다는 것 max값을..

[DFS/BFS] 연구소 (BAEKJOON - 14502)

1. 문제 벽을 3개 지어서 0을 최대한 많이 만들어라. virus는 상하좌우로 퍼짐 2. 입력 # SET - 1 N, M = 7, 7 maps = '''2 0 0 0 1 1 0 0 0 1 0 1 2 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0''' # SET - 2 N, M = 4, 6 maps = '''0 0 0 0 0 0 1 0 0 0 0 2 1 1 1 0 0 2 0 0 0 0 0 2''' # SET - 3 N, M = 8, 8 maps = '''2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 2 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 ..

[구현] 외벽 점검

1. 문제 친구들을 활용해 외벽 점검을 하자. 점검이 필요한 외벽의 번호 오름차순으로 주어진다. 각 친구들은 점검할 수 있는 길이가 정해져있다. 친구들을 최소한으로 사용해서 외벽 점검을 마쳐라. 2. 입력 # SET - 1 n = 12 weak = [1, 5, 6, 10] dist = [1, 2, 3, 4] # SET - 2 n = 12 weak = [1, 3, 4, 9, 10] dist = [3, 5, 7] # SET - 3 n = 50 weak = [1] dist = [6] # SET - 4 n = 200 weak = [0, 10, 50, 80, 120, 160] dist = [1, 10, 5, 40, 30] # SET - 5 n = 30 weak = [0, 3, 11, 21] dist = [10, ..

[구현] 자물쇠와 열쇠

1. 문제 풀어보기 (프로그래머스) Key로 Lock을 풀수 있는 방법이 있는가? 가능한 방법 : 회전, 이동 0은 들어간부분, 1은 튀어나온 부분 2. 입력 # SET - 1 key= [[0, 0, 0], [1, 0, 0], [0, 1, 1]] lock= [[1, 1, 1], [1, 1, 0], [1, 0, 1]] 3. 출력 # SET - 1 result = True 4. 풀이 회전함수를 구현해야한다. 여기서 중요한 건, 회전한 키의 type이 Lock에서 가져온 홈 파인부분과 일치하지 않으면, False를 반환하게 된다. 이 점을 유의해서 회전함수를 구현하는 것이 필요 회전함수를 구현했으면, 이후에 어떻게 저 홈에 키를 끼워맞출 것인지, 생각해야 하는데 본인의 경우에는 Lock에서 홈이 패인 부분만 ..

[그리디] 무지의 먹방 라이브

1. 문제 무지의 카카오 TV 방송 ! 1. 1번 음식부터 순서대로 먹기 시작함 2. 마지막 번호의 음식을 먹고나면 다시 1번 음식을 먹음 3. 1초에 한 음식만 먹고, 다음 음식은 남아있는 음식 중 가장 가까운 번호의 음식 4. 다음 번호의 음식이 오는데 걸리는 시간은 없음 K초가 지났다. 몇 번 음식을 먹어야 하는가? 2. 입력 # SET - 1 food_times=[3, 1, 2] K = 5 # SET - 2 food_times = [4, 2, 3, 6, 7, 1, 5, 8] K = 27 # SET - 3 food_times = [4, 2, 3, 6, 7, 1, 5, 8] K = 16 3. 출력 # SET - 1 result = 1 # SET - 2 result = 5 # SET - 3 result..

[그리디] 만들 수 없는 금액

1. 문제 N개의 동전을 이용하여 만들 수 없는 양의 정수 금액 중 최솟값을 구하는 프로그램을 작성하세요. 2. 입력 5 3 2 1 1 9 3. 출력 8 그리디 문제, 동전들을 오름차순으로 정렬하고 목표 금액을 만들 수 있는지 여부를 판단하며 값을 증가시킨다. 현재 만들 수 있는 값을 target이라 하면, 현재 target보다 주어진 coin이 크면 해당 금액은 만들 수 없게 된다. 1 1 2 3 9가 주어졌을 때, 초기 target = 1 부터 시작한다고 했을 때, 1 ≥ 1 이므로 target += 1 → target=2 두 번째 코인 2 ≥ 1 이므로 target += 1 → target=3 세 번째 코인 3 ≥ 2 이므로 target += 2 → target=5 네 번째 코인 5 ≥ 3 이므로 ..

알고리즘 노트 - Python 라이브러리

# 입력 input() import sys sys.stdin.readline().rstrip() # 출력 print(f'{value}') # 내장 함수 sum([list]) max([list]) min([list]) eval("(3 + 5) * 7") sorted(array, reverse=False, key=lambda i:i[1]) # 반복 from itertools import permutations, combinations, product # 클래스객체 반환 permutations(array, 3) # 순열 (A B) (B A) combinations(array, 2) # 조합 (A B) product(array, repeat=2) # 중복 허용 순열 # 자료형 heap import heapq h..

[Pandas] 자주 쓰는 함수 모음 Python

안녕하세요 ! 소신입니다. 데이터 분석을 위해선 pandas 모듈을 잘 사용하는게 도움이 많이 되는데요 자주 사용하진 않지만, 까먹었을 때 찾아보기는 귀찮은 함수들을 모아서 정리해보았습니다. # Pandas 기본 # Pandas DataFrame 기본 pd.read_csv('pth/to/file/path', index_col='date', header=None) df.dropna() df.reset_index(drop=True, inplace=True) pddf[pddf['본문'].apply(lambda i : '삼성전자' in str(i))] # = 본문에 삼성전자가 있는 애들만 출력 df.sort_values(by='날짜', ignore_index=True) pddf['카테고리'].count() / ..

[찾기 쉬운 Python 코드] Numpy

안녕하세요 ! 소신입니다. 사용법 + 예제 코드까지 이해하고 찾기 쉽게 정리해놓았습니다 찾기 : CTRL+F로 검색어를 입력해보세요 #np.nan #np.inf np.nan + 1 => np.nan 1 + np.nan => np.nan np.inf + 1 => np.inf 1 + np.ifn => np.inf #vstack #hstack #numpy 배열 합치기, 가로 합치기, 세로 합치기, 열 합치기, 행 합치기 # vstack a = np.ones((1,5)) # 1x5 b = np.ones((1,3)) # 1x3 d = np.c_[a,b] # 1x8 d, d.shape # OUT >>> array([[1., 1., 1., 1., 1., 1., 1., 1.]]), (1, 8) # hstack a = ..

반응형