PYTHON

카테고리 없음

[백준/BOJ] python 1920번 수 찾기

언어: python 번호: 1920 제목: 수 찾기 등급: 실버4 ​ ​ 풀이 과정: 처음에는 for i in lst로 리스트 안에 있는지를 확인했더니 당연하게도 시간 초과가 떴다. 그래서 재귀문을 써서 풀려했다. n, lstn, m, lstm을 입력받아 숫자 리스트를 정렬하고 이진탐색으로. 가운데 값과 비교해서 작으면 왼쪽으로 가고, 크면 오른쪽으로 가려했다. 근데 잘 안됐다. 내 생각에 while문을 안 쓰고 length==0이라는 조건을 걸어서 탐색 횟수가 정해지니까 못 탐색하기 바로 전 단계에서 멈쳐버리는 것 같다. 이를 풀려면 변수를 하나 더 써서 while문에 조건을 걸어야할 것 같다. ​ ​ 코드: 내가 잘못 푼 코드 #1920 n = int(input()) lstn = list(map(in..

BOJ

[백준/BOJ] python 10974번 모든 순열

언어: python 번호: 10974 제목: 모든 순열 등급: 실버3 ​ ​ 풀이 과정: 재귀함수로 풀었다. 리스트를 만들어 해당 숫자에 방문했는지 안했는지를 확인하고 새로운 순열 arr에 추가하는 방식이다. ​ ​ 코드: # 10974 # 순열의현재길이, 모든 숫자의 수, 고를 숫자의 수, 새로 만들 순열, 방문했는지 확인하는 리스트 def permutation(k, n, m, arr, ch): if k==m: print(*arr) else: for i in range(1, n+1): if not ch[i]: ch[i] = True arr[k] = i permutation(k+1, n, m, arr, ch) ch[i] = False N, M = 5, 2 ch = [False]*(N+1) arr = [0..

BOJ

[백준/BOJ] python 10982번 다음 순열

언어: python 번호: 10972 제목: 다음 순열 등급: 실버 3 풀이 과정: 일단 숫자 n과 순열 arr를 입력받는다. arr은 가장 뒤의 숫자부터 2개씩 비교를 하면서 다음 순열을 찾는다. 예를 들어 [1, 3, 4, 2]라는 순열의 다음 숫자를 찾기 위해서는 [4, 2] -> [3, 4] -> [1, 3]의 순서로 비교를 해야한다. 비교할때 앞에 있는 숫자가 더 작으면 두개의 위치를 교환한다. 그리고 교환한 숫자의 뒤를 정렬한다. [1, 3, 4, 2] : 뒤에서부터 4와 2를 비교했는데 앞의 숫자가 더 크니까 그래도 둔다. [1, 3, 4, 2] : 그 다음인 3과 4를 비교했는데 앞의 숫자가 더 작으니 둘의 위치를 교환한다. [1, 4, 3, 2] : 위치를 바꾼 뒤 앞의 숫자인 4를 기준..

BOJ

[백준/BOJ] python 1406번 에디터

언어: python 번호: 1406 제목:에디터 등급: 실버 2 ​ 풀이 과정: 원래는 리스트 하나를 만들어 풀려했지만 시간이 초과되서 스택 2개를 만들어 풀었다. 커서의 위치를 기준으로 왼쪽 리스트(s1)과 오른쪽 리스트(s2)를 만들어 명령에 맞게 pop()함수를 사용했다. ​ 내 코드: import sys INPUT = sys.stdin.readline s1 = list(INPUT()) s2 = [] n = int(INPUT()) for _ in range(n): command = list(INPUT().split()) if command[0]=='L': if s1: s2.append(s1.pop()) elif command[0]=='D': if s2: s1.append(s2.pop()) elif ..

BOJ

[백준/BOJ] python 10828번 스택

언어: python 번호: 10828 제목: 스택 등급: 실버 4 ​ 풀이 과정: 명령의 수 n을 입력받고, n번 명령을 입력 받아 if문을 사용해 명령에 따라 출력한다. 잘못된 코드: n = int(input()) stack = [] for i in range(n): order = input().split() if order[0]=='push': stack.append(order[1]) elif order[0]== 'pop': if len(stack)==0: print(-1) else: print(stack[-1]) stack.remove(stack[-1]) elif order[0]=='size': print(len(stack)) elif order[0]=='empty': if len(stack)==0..

BOJ

[백준/BOJ] python 5800번 성적 통계

언어: python 번호: 5800 제목: 성적 통계 등급: 실버 5 ​ 풀이 과정: 학급의 수 k, 학생의 수 n, 수학 성적 배열 lst를 입력받는다. 성적을 정렬하고, 예제에 맞춰 학급 번호, 최댓값, 최솟값을 출력한다. 그리고 각 리스트간의 차이를 구해 가장 큰 값을 출력한다. ​ ​ 코드: # 5800 import sys input = sys.stdin.readline k = int(input()) for i in range(k): n,*lst=map(int,input().split()) lst.sort() print("Class {}".format(i+1)) print("Max {}, Min {}, ".format(lst[-1], lst[0]), end='') for i in range(n-1..

BOJ

[백준/BOJ] python 2921번 도미노

언어: python 번호: 2921 제목: 도미노 등급: 브론즈 3 ​ 풀이 과정: 크기가 n인 도미노 세트를 n의 값에 따라 나눈다고 생각하고 각 도미노에 있는 점의 개수는 다음과 같다. f(0) = (0, 0) -> 1개 f(1) = f(0) + (1, 0) + (1, 1) -> f(0) + 1 + 2 개 f(2) = f(1) + (2, 0) + (2, 1) + (2, 2) -> f(1) + 2 + 3 + 4 개 f(3) = f(2) + (3, 0) + (3, 1) + (3, 2) + (3, 3) -> f(2) + 3 + 4+ 5 개 이때 수열의 합을 이용하여 i번째 도미노 세트에 있는 점의 개수의 합은 (3*i**2+3*i)//2임을 알 수 있다. 크기가 n인 도미노 세트에 있는 모든 점의 개수의 ..

BOJ

[백준/BOJ] python 1149번 RGB거리

언어: python 번호: 1149 제목: RGB거리 등급: 실버1 ​ 풀이 과정: ​DP(동적계획법)으로 풀 수 있다. 집의 색깔은 빨강, 초록, 파랑 중에 하나로 칠해야 한다. 이때 i번째(1 i-1번째 집이 초록 또는 파랑 중에 비용이 적은 것 i번째 집은 초록 > i-1번째 집이 파랑 또는 빨강 중에 비용이 적은 것 으로 칠하면 된다. 2차원 배열 DP[n][3]을 만들어 n번째 열에 n번째 집을 칠하는 색깔에 따라 생기는 비용의 총합을 저장해 가장 작은 값을 출력하면 된다. 예제 입력 1 3 26 40 83 49 60 57 13 89 99 dp[n][3] 1번째 2번째 3번째 모든 집을 칠하는 비용 빨강 26 min(40, 83) + 49 = 89 min(96, 73) + 13 = 86 86 초..

kyj0015
'PYTHON' 태그의 글 목록