본문 바로가기
반응형

백준61

[백준] 바이러스 2606 (파이썬) 스케치 코드 from collections import deque # BFS 메서드 정의 def bfs(graph, start, visited): # 큐(Queue) 구현을 위해 deque 라이브러리 사용 queue = deque([start]) # 현재 노드를 방문 처리 visited[start] = True # 큐가 빌 때 까지 반복 while queue: # 큐에서 하나의 원소를 뽑아 출력하기 v = queue.popleft() # 아직 방문하지 않은 인접한 원소들을 큐에 삽입 for i in graph[v]: if not visited[i]: queue.append(i) visited[i] = True def dfs(graph, v, visited): # 현재 노드를 방문 처리 visited[v].. 2021. 3. 12.
[백준] 피보나치 함수 분류 1003 (파이썬) # 피보나치 함수 분류 # 시간 제한메모리 제한제출정답맞은 사람정답 비율 # 0.25 초 (추가 시간 없음)128 MB112612291652293330.046% # 문제 # 다음 소스는 N번째 피보나치 수를 구하는 C++ 함수이다. # 1 # 2 # 3 # 4 # 5 # 6 # 7 # 8 # 9 # 10 # 11 # int fibonacci(int n) { # if (n == 0) { # printf("0"); # return 0; # } else if (n == 1) { # printf("1"); # return 1; # } else { # return fibonacci(n‐1) + fibonacci(n‐2); # } # } # fibonacci(3)을 호출하면 다음과 같은 일이 일어난다. # fibo.. 2021. 3. 12.
[백준] 스택 수열 1874 (파이썬) 스케치 문제 풀이 n = int(input()) result = [] st = [] # 스택 count = 0 # 몇번 째 숫자까지 스택에 넣었는지 알기 위함 flag = True for _ in range(n): x = int(input()) # 스택에서 꺼내야하는 숫자 while count < x: # x 숫자까지는 스택에 쌓아야 pop으로 빼낼 수 있다. count += 1 result.append('+') st.append(count) if x == st[-1]: # 스택에서 꺼내야 하는 값 x가 실제 스택에 들어있는지 체크 result.append('-') st.pop() else: flag = False if flag: for i in result: print(i) # print( [i for.. 2021. 3. 10.
[백준] 균형잡힌 세상 4949 (파이썬) 균형잡힌 세상 시간 제한메모리 제한제출정답맞은 사람정답 비율 1 초128 MB260868643705433.203% 문제 세계는 균형이 잘 잡혀있어야 한다. 양과 음, 빛과 어둠 그리고 왼쪽 괄호와 오른쪽 괄호처럼 말이다. 정민이의 임무는 어떤 문자열이 주어졌을 때, 괄호들의 균형이 잘 맞춰져 있는지 판단하는 프로그램을 짜는 것이다. 문자열에 포함되는 괄호는 소괄호("()") 와 대괄호("[]")로 2종류이고, 문자열이 균형을 이루는 조건은 아래와 같다. 모든 왼쪽 소괄호("(")는 오른쪽 소괄호(")")와만 짝을 이뤄야 한다. 모든 왼쪽 대괄호("[")는 오른쪽 대괄호("]")와만 짝을 이뤄야 한다. 모든 오른쪽 괄호들은 자신과 짝을 이룰 수 있는 왼쪽 괄호가 존재한다. 모든 괄호들의 짝은 1:1 매칭만.. 2021. 3. 10.
[백준] 회전하는 큐 1021 (파이썬) 문제 풀이 # 예제2 해석 # 1번 연산: 앞에 있는 것 빼기 (data.popleft()) # 2번 연산: 왼쪽으로 밀기 (data.append(data.popleft())) # 3번 연산: 오른쪽으로 밀기 (data.appendleft(data.pop())) n,m = 10, 3 value = [2,9,5] # 뽑아 내려는 수가 2 9 5 일 때 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 2 수행 후 2, 3, 4, 5, 6, 7, 8, 9, 10, 1 # 1 수행 후 3, 4, 5, 6, 7, 8, 9, 10, 1 # 3, 3, 3 수행 후 9, 10, 1, 3, 4, 5, 6, 7, 8 # 1 시행 후 10, 1, 3, 4, 5, 6, 7, 8 # 2,2,2,2 or 3,3,3,.. 2021. 3. 10.
[백준] 나무자르기 2805 (파이썬) 이진탐색 문제 입력 받아야 할 값과 데이터가 크기 때문에 이진탐색을 고려하였다. 입력 값을 빠르게 받기위해 sys.stdin.readline().rstrip() 함수를 사용한다. 시간 초과가 날 경우 pypy를 이용한다. 예 아니오로 나눌 수 있는 파라메틱 서치 문제는 재귀적으로 하는 것보다 반복문으로 푸는 것이 더 깔끔하다. # 예 아니오로 나눌 수 있는 파라메틱 서치 문제는 재귀적으로 하는 것보다 반복문으로 푸는 것이 더 깔끔하다. import sys n , m = list(map(int,sys.stdin.readline().rstrip().split())) # 나무 개수 n, 필요한 나무 길이 m array = list(map(int,sys.stdin.readline().rstrip().split(.. 2021. 3. 9.
[백준] 좌표 정렬하기2 11651 (파이썬) 람다 표현식과 key를 알고 있다면 풀수 있는 문제였다. 정렬에서 key의 의미 # key 매개변수 입력 key값으로는 함수가 들어가야 하며 이는 정렬 기준이 된다. # key 값은 람다(lambda 함수를 사용할 수 도 있다) array= [('바나나',2), ('사과',5), ('당근',3)] def setting(data): return data[1] result = sorted(array, key=setting) print(result) 람다 표현식(Lambda Express) 특정한 기능을 수행하는 함수를 한 줄에 작성할 수 있다 람다식은 파이썬의 정렬 라이브러리를 사용할 때, 정렬 기준(Key)을 설정할 때에도 자주 사용한다. def add(a, b): return a + b print(add.. 2021. 3. 9.
[백준] 암호 만들기 1759 (파이썬) import itertools import sys l, c = map(int,sys.stdin.readline().rstrip().split()) secret = sorted(list(sys.stdin.readline().rstrip().split())) data = ('a', 'e', 'i', 'o', 'u') for x in list(itertools.combinations(secret, l)): count = 0 for i in data: if i in x: count += 1 if count >= 1 and l - count >= 2: # 자음이 2개 이상이란 것을 고려하지 않았었다. print(''.join(x)) # 출력 초과 왜 그러지? 조합 값이 l이 아닌 4를 넣었다. itertools라.. 2021. 3. 8.
[백준] 소수 구하기 1929 (파이썬) # 소수 구하기 분류 # 시간 제한메모리 제한제출정답맞은 사람정답 비율 # 2 초256 MB92626260761851427.337% # 문제 # M이상 N이하의 소수를 모두 출력하는 프로그램을 작성하시오. # 입력 # 첫째 줄에 자연수 M과 N이 빈 칸을 사이에 두고 주어진다. (1 ≤ M ≤ N ≤ 1,000,000) M이상 N이하의 소수가 하나 이상 있는 입력만 주어진다. # 출력 # 한 줄에 하나씩, 증가하는 순서대로 소수를 출력한다. # 예제 입력 1 # 3 16 # 예제 출력 1 # 3 # 5 # 7 # 11 # 13 import math m,n = map(int, input().split()) array = [True for i in range(n+1)] #[True] * n+1 array[0.. 2021. 3. 8.
[백준] ACM 호텔 10250 (파이썬) # 문제 # ACM 호텔 매니저 지우는 손님이 도착하는 대로 빈 방을 배정하고 있다. 고객 설문조사에 따르면 손님들은 호텔 정문으로부터 걸어서 가장 짧은 거리에 있는 방을 선호한다고 한다. 여러분은 지우를 도와 줄 프로그램을 작성하고자 한다. 즉 설문조사 결과 대로 호텔 정문으로부터 걷는 거리가 가장 짧도록 방을 배정하는 프로그램을 작성하고자 한다. # 문제를 단순화하기 위해서 호텔은 직사각형 모양이라고 가정하자. 각 층에 W 개의 방이 있는 H 층 건물이라고 가정하자 (1 ≤ H, W ≤ 99). 그리고 엘리베이터는 가장 왼쪽에 있다고 가정하자(그림 1 참고). 이런 형태의 호텔을 H × W 형태 호텔이라고 부른다. 호텔 정문은 일층 엘리베이터 바로 앞에 있는데, 정문에서 엘리베이터까지의 거리는 무시한.. 2021. 3. 8.
[백준] 달팽이는 올라가고 싶다 2869 (파이썬) # 문제 # 땅 위에 달팽이가 있다. 이 달팽이는 높이가 V미터인 나무 막대를 올라갈 것이다. # 달팽이는 낮에 A미터 올라갈 수 있다. 하지만, 밤에 잠을 자는 동안 B미터 미끄러진다. 또, 정상에 올라간 후에는 미끄러지지 않는다. # 달팽이가 나무 막대를 모두 올라가려면, 며칠이 걸리는지 구하는 프로그램을 작성하시오. # 입력 # 첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000) # 출력 # 첫째 줄에 달팽이가 나무 막대를 모두 올라가는데 며칠이 걸리는지 출력한다. # 예제 입력 1 # 2 1 5 # 예제 출력 1 # 4 # 예제 입력 2 # 5 1 6 # 예제 출력 2 # 2 # 예제 입력 3 # 100 99 100000000.. 2021. 3. 8.
[백준] 크로아티아 알파벳 2941 (파이썬) # 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. # 크로아티아 알파벳변경 # čc= # ćc- # dždz= # đd- # ljlj # njnj # šs= # žz= # 예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. # dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다. # 입력 # 첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다. # 단어는.. 2021. 3. 8.
[백준] 단어공부 1157 (파이썬) # 단어 공부 분류 # 시간 제한메모리 제한제출정답맞은 사람정답 비율 # 2 초128 MB88983343162773338.828% # 문제 # 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. # 입력 # 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. # 출력 # 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. # 예제 입력 1 # Mississipi # 예제 출력 1 # ? # 예제 입력 2 # zZa # 예제 출력 2 # Z # 예.. 2021. 3. 8.
[백준] 셀프넘버 4673 (파이썬) # 셀프 넘버 출처다국어분류 # 시간 제한메모리 제한제출정답맞은 사람정답 비율 # 1 초256 MB70474354532848050.391% # 문제 # 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. # 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. # 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열.. 2021. 3. 8.
[백준] 알람시계 2884 (파이썬) # 문제 # 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. # 상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다. # 이런 상근이를 불쌍하게 보던, 창영이는 자신이 사용하는 방법을 추천해 주었다. # 바로 "45분 일찍 알람 설정하기"이다. # 이 방법은 단순하다. 원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다. 어차피 알람 소리를 들으면, 알람을 끄고 조금 더 잘 것이기 때문이다. 이 방법을 사용하면, 매일 아침 더 잤다는 기분을 느낄 수 있고, 학교도 지각하지 않게 된다. # 현재 상근이가 설정한 알람 시각이 주어졌을 때, 창영이의 방법을.. 2021. 3. 8.
반응형