본문 바로가기
반응형

전체 글103

[백준] 1236번 : 성 지키기 유형 : 탐색 [예제] 5 8 ....XXXX ........ XX.X.XX. ........ ........ [출력] 3 1. 내 풀이 우선 예시를 통해 문제를 이해해보자. (아래그림 참고) import sys N, M = map(int,sys.stdin.readline().split()) _list = [] result1 = 0 for i in range(N): tmp = sys.stdin.readline().strip() _list.append(tmp) if 'X' not in tmp: result1 += 1 result2 = 0 for i in range(M): cnt2 = 0 for j in range(N): if _list[j][i] == 'X': break else: cnt2 += 1 if .. 2022. 1. 4.
[백준] 1668번 : 트로피 진열 유형 : 탐색 [예제] 7 1 4 2 5 3 7 1 [출력] 4 2 1. 내 풀이 예제를 우선 살펴보면, 위의 그림처럼 중간중간 변하는 max를 기준으로 보이는 개수가 달라지는 것을 알 수 있다. 그래서 max값을 기준으로 값을 비교하는 식으로 코드를 짜면 되겠다고 생각했다. import sys N = int(sys.stdin.readline()) _list = [] for _ in range(N): num = int(sys.stdin.readline()) _list.append(num) def count_trophy(_list,N): cnt = 1 _max = _list[0] for i in range(N): if _max < _list[i]: cnt += 1 _max = _list[i] return .. 2022. 1. 3.
[백준] 1302번 : 베스트셀러 ☆ 유형 : 탐색 [예제] 5 top top top top kimtop [출력] top 1. 내 풀이 import sys N = int(sys.stdin.readline()) _list = [] for _ in range(N): book = sys.stdin.readline().strip() _list.append(book) _list = sorted(_list) _set = set(_list) _list2 = list(_set) _list2 = sorted(_list2) max = 0 max_book = 0 for i in range(len(_list2)): cnt = _list.count(_list2[i]) if cnt > max: max = cnt max_book = _list2[i] print(max.. 2022. 1. 3.
[백준] 1568번 : 새 유형 : 탐색 [예제] 14 [출력] 1 1. 내 풀이 N = int(input()) cnt = 0 k = 1 while True: if N n: k = 1 n-=k k += 1 .. 2022. 1. 3.
[백준] 1543번 : 문서 검색 유형 : 정렬 [예제1] ababababa aba [출력1] 2 [예제2] a a a a a a a [출력2] 2 1. 내 풀이 text = input() word = input() print(text.count(word)) ▷ count()로 전체 문서 중 원하는 단어가 몇 개인지 셀 수 있었다. 2. 다른 풀이 출처 : 패스트캠퍼스 - 알고리즘 / 기술면접 완전 정복 올인원 패키지 Online ** 핵심 아이디어 1. 문서의 길이는 최대 2500이고 단어의 길이는 최대 50이다. 2. 단순히 모든 경우의 수를 계산하여 문제를 해결할 수 있다. 3. 시간 복잡도 O(NM)의 알고리즘으로 해결할 수 있다. - 문서, 단어 길이가 크지 않기 때문에 모든 경우를 파악해도 충분하다. ex. 문서 : ababa.. 2022. 1. 3.
[백준] 11004번 : K번째 수 유형 : 정렬 [예제] 5 2 4 1 2 3 5 [출력] 2 1. 내 풀이 import sys N, K = map(int, sys.stdin.readline().split()) _list = list(map(int, sys.stdin.readline().split())) print(sorted(_list)[K-1]) ▷ sys.stdin.readline()을 이용해 소요되는 시간을 줄였다. ▷ sys.stdin.readline()에 대해 참고한 블로그 : [Python 문법] 파이썬 입력 받기(sys.stdin.readline) ▷ 아래 그림을 보면 PyPy3과 Python3에서 실행한 시간을 알 수 있다. 2. 다른 풀이 출처 : 패스트캠퍼스 - 알고리즘 / 기술면접 완전 정복 올인원 패키지 Onlin.. 2022. 1. 3.
[백준] 2751번 : 수 정렬하기 2 유형 : 정렬 [예제] 5 5 4 3 2 1 [출력] 1 2 3 4 5 1. 내 풀이 import sys N = int(sys.stdin.readline()) _list = [] for _ in range(N): _list.append(int(sys.stdin.readline())) _list.sort() for data in _list: print(data) ▷ 기본 정렬 라이브러리(sort())를 이용해 쉽게 구할 수 있었다. ▷ input()을 쓰면 시간초과가 나오길래 sys.stdin.readline()으로 수정하였다. ▶ input() 함수의 경우 prompt message를 출력하고 개행 문자(\n)를 삭제한 값을 리턴해서 느리다고 한다. ▶ 참고 : [Python] Input vs. sys... 2022. 1. 3.
[백준] 7490번 : 0 만들기 ☆ 유형 : 재귀 [예제] 2 3 7 [출력] 1+2-3 1+2-3+4-5-6+7 1+2-3-4+5+6-7 1-2 3+4+5+6+7 1-2 3-4 5+6 7 1-2+3+4-5+6-7 1-2-3-4-5+6+7 1. 풀이 ** 핵심 아이디어 1. 자연수 N의 범위(3≤N≤9)가 매우 한정적이므로 완전 탐색으로 문제 해결 가능 2. 수의 리스트와 연산자 리스트를 분리하여 모든 경우의 수 계산 3. 가능한 모든 경우를 고려하여 연산자 리스트를 만드는 것이 관건(재귀 함수 이용) ex. N = 3 [[' ', ' '], [' ', '+'], [' ', '-'], ['+', ' '], ['+', '+'], ['+', '-'], ['-', ' '], ['-', '+'], ['-', '-']] 4. 파이썬의 eval() .. 2022. 1. 1.
[백준] 1074번 : Z ☆ 유형 : 재귀함수 [예제] 2 3 1 [출력] 11 1. 풀이 출처 : 패스트캠퍼스 - 알고리즘 / 기술면접 완전 정복 패키지 Online ** 핵심 아이디어 1. Z 모양을 구성하는 4가지 방향에 대하여 차례대로 재귀적으로 호출 def solve(n,x,y): global result if n == 2: # 2*2인 경우 if x == X and y == Y: # 아래 그림에서 1번 print(result) return result += 1 if x == X and y + 1 == Y: # 아래 그림에서 2번 print(result) return result += 1 if x + 1 == X and y == Y: # 아래 그림에서 3번 print(result) return result += 1 if x.. 2022. 1. 1.
반응형