본문 바로가기
반응형

코딩테스트/파이썬68

[백준] 영화감독 숌 1416 (파이썬) (수정) 코드 # 영화감독 숌 분류 # 1안 매우 비효율적 n = int(input()) s = '666' arr = [] for i in range(3000000): if s in str(i): # if str(i).find(s) != -1: arr.append(i) print(arr[n-1]) # 2안 n = int(input()) num = 666 cnt = 0 while True: if '666' in str(num): cnt += 1 if cnt == n: print(num) break num += 1 2021. 3. 12.
[백준] 그룹단어 체커 1316 (파이썬) 스케치 코드 # 그룹 단어 체커 분류 # 시간 제한메모리 제한제출정답맞은 사람정답 비율 # 2 초128 MB48212247802129252.393% # 문제 # 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. # 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오. # 입력 # 첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자.. 2021. 3. 12.
[백준] 가장 긴 증가하는 부분 수열 11053 (파이썬) 스케치 코드 x = int(input()) arr = list(map(int, input().split())) # 먼저 배열과 같은 크기를 같는 1로 가득찬 배열을 하나 만들어준다. ex) r=6, res={1,1,1,1,1,1} dp = [1 for _ in range(x)] # 길이가 가장 긴 /증가하는부분수열의 길이 for i in range(x): i = 2 # 해당 로직은 오름차순 정렬에 대해 생각해야 수월하다 오름차순 정렬을 하려면 # 자신보다 왼쪽에 있는 숫자가 자신보다 작아야 오름차순 정렬이다. ex) 2를 기준으로 1,2 => 오름차순O / 2,2 => 오름차순x # 2번째 자리보다 작은 숫자가 있어야하는것은 1번째 자리이다. ex) 3번째 자리면 우리는 1부터 3까지의 자리만 비교해주면.. 2021. 3. 12.
[백준] 숫자 카드 10815 (파이썬) # 숫자 카드 성공분류 # 시간 제한메모리 제한제출정답맞은 사람정답 비율 # 2 초256 MB2714113281914448.522% # 문제 # 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오. # 입력 # 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 두 숫자 카드에 같은 수가 적혀있는 경우는 없다. # 셋째 줄에는 M(1 ≤ M ≤ 500,0.. 2021. 3. 12.
[백준] Fly me to the Alpha Centauri 1011 (파이썬) # Fly me to the Alpha Centauri 분류 # 시간 제한메모리 제한제출정답맞은 사람정답 비율 # 2 초512 MB52396147241167329.445% # 문제 # 우현이는 어린 시절, 지구 외의 다른 행성에서도 인류들이 살아갈 수 있는 미래가 오리라 믿었다. 그리고 그가 지구라는 세상에 발을 내려 놓은 지 23년이 지난 지금, 세계 최연소 ASNA 우주 비행사가 되어 새로운 세계에 발을 내려 놓는 영광의 순간을 기다리고 있다. # 그가 탑승하게 될 우주선은 Alpha Centauri라는 새로운 인류의 보금자리를 개척하기 위한 대규모 생활 유지 시스템을 탑재하고 있기 때문에, 그 크기와 질량이 엄청난 이유로 최신기술력을 총 동원하여 개발한 공간이동 장치를 탑재하였다. 하지만 이 공간이.. 2021. 3. 12.
[백준] 토마토 7576 (파이썬) # 토마토 출처분류 # 시간 제한메모리 제한제출정답맞은 사람정답 비율 # 1 초256 MB81798287071800233.183% # 문제 # 철수의 토마토 농장에서는 토마토를 보관하는 큰 창고를 가지고 있다. 토마토는 아래의 그림과 같이 격자 모양 상자의 칸에 하나씩 넣어서 창고에 보관한다. # 창고에 보관되는 토마토들 중에는 잘 익은 것도 있지만, 아직 익지 않은 토마토들도 있을 수 있다. 보관 후 하루가 지나면, 익은 토마토들의 인접한 곳에 있는 익지 않은 토마토들은 익은 토마토의 영향을 받아 익게 된다. 하나의 토마토의 인접한 곳은 왼쪽, 오른쪽, 앞, 뒤 네 방향에 있는 토마토를 의미한다. 대각선 방향에 있는 토마토들에게는 영향을 주지 못하며, 토마토가 혼자 저절로 익는 경우는 없다고 가정한다... 2021. 3. 12.
[백준] 바이러스 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 (파이썬) def hanoi(n, a, b): n > 1: hanoi(n-1, a, 6-a-b) # 기둥이 1개 이상이면 그룹으로 묶인 n-1개 원판을 중간으로 먼저 다 옮기겠다 1, 2, 3이기 때문에 중간은 1,3을 뺀 값 print(a,b) # n번 째 기둥이 a -> b 로 옮겨짐 n > 1: # 기둥이 한개 이상이면 남은 기둥 (n-1)개를 중간에서 b로 옮기겠다. hanoi(n-1, 6-a-b, b) n = int(input()) print(2 ** n-1) # 총 이동해야하는 횟수 hanoi(n, 1, 3) # 3개 원판을 기둥 1에서 3으로 옮기겠다 재귀함수 개념 2021.03.08 - [Algorithm & Data structure] - 재귀 함수 재귀 함수 재귀 함수(Recursive Funct.. 2021. 3. 8.
[백준] 암호 만들기 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.
반응형