목록파이썬 (140)
홍우진의 개발 일기장
문제 링크 https://www.acmicpc.net/problem/2491 2491번: 수열 0에서부터 9까지의 숫자로 이루어진 N개의 숫자가 나열된 수열이 있다. 그 수열 안에서 연속해서 커지거나(같은 것 포함), 혹은 연속해서 작아지는(같은 것 포함) 수열 중 가장 길이가 긴 것을 찾 www.acmicpc.net 풀이 코드 N = int(input()) arr = list(map(int, input().split())) cnt = 1 max_l = 1 for i in range(1, N): if arr[i-1] >= arr[i]: cnt += 1 else: cnt = 1 if max_l < cnt: max_l = cnt cnt = 1 for i in range(1, N): if arr[i-1]
문제 링크 https://www.acmicpc.net/problem/16395 16395번: 파스칼의 삼각형 파스칼의 삼각형은 이항계수를 삼각형 형태로 배열한 것인데, 블레즈 파스칼(1623-1662)을 따라 이름 붙여졌다. 단순한 형태로, 파스칼의 삼각형은 다음과 같은 방법으로 만들 수 있다. N번째 행 www.acmicpc.net 풀이 코드 data = [[1 for _ in range(i)] for i in range(1, 31)] for i in range(2, 30) : for j in range(1, i) : data[i][j] = data[i-1][j-1] + data[i-1][j] n, k = map(int, input().split()) print(data[n-1][k-1]) 코드 해석 ..
문제 링크 https://www.acmicpc.net/problem/1769 1769번: 3의 배수 문제가 잘 풀리지 않을 때, 문제를 바라보는 시각을 조금만 다르게 가지면 문제가 쉽게 풀리는 경험을 종종 해 보았을 것이다. 여러 가지 방법이 있지만 그 중 하나로 우리가 풀고 싶은 문제를 www.acmicpc.net 풀이 코드 def conversion(string, cnt): if len(string) > 1: cnt += 1 n = 0 for i in string: n += int(i) conversion(str(n), cnt) else: if int(string) % 3 == 0: print(cnt) print("YES") else: print(cnt) print("NO") if __name__ =..
문제 링크 https://www.acmicpc.net/problem/14490 14490번: 백대열 n과 m이 :을 사이에 두고 주어진다. (1 ≤ n, m ≤ 100,000,000) www.acmicpc.net 풀이 코드 n, m = map(int, input().split(':')) def gcd(a, b): while b > 0: tmp = a a = b b = tmp % b return a a = gcd(n, m) print('%d:%d' %(n // a, m // a)) 코드 해석 유클리드 호제법을 사용해 최대공약수를 구한 후, 각 값에 최대공약수를 나눠준 뒤 출력해준다.
문제 링크 https://www.acmicpc.net/problem/2628 2628번: 종이자르기 아래 과 같이 직사각형 모양의 종이가 있다. 이 종이는 가로방향과 세로 방향으로 1㎝마다 점선이 그어져 있다. 가로 점선은 위에서 아래로 1번부터 차례로 번호가 붙어 있고, 세로 점선 www.acmicpc.net 풀이 코드 r, c = map(int, input().split()) row = [0, r] column = [0, c] for _ in range(int(input())): r_or_c, linenumber = map(int, input().split()) if r_or_c == 1: row.append(linenumber) else : column.append(linenumber) row.so..
문제 링크 https://www.acmicpc.net/problem/5800 5800번: 성적 통계 첫째 줄에 중덕 고등학교에 있는 반의 수 K (1 ≤ K ≤ 100)가 주어진다. 다음 K개 줄에는 각 반의 학생수 N (2 ≤ N ≤ 50)과 각 학생의 수학 성적이 주어진다. 시험 성적은 0보다 크거나 같고, 100보다 www.acmicpc.net 풀이 코드 k = int(input()) student = [] for j in range(1,k+1): student = list(map(int,input().split())) student = student[1:] s_student = sorted(student) lg = 0 for i in range(0,len(s_student)-1): if s_stu..
문제 링크 https://www.acmicpc.net/problem/15904 15904번: UCPC는 무엇의 약자일까? 첫 번째 줄에 알파벳 대소문자, 공백으로 구성된 문자열이 주어진다. 문자열의 길이는 최대 1,000자이다. 문자열의 맨 앞과 맨 끝에 공백이 있는 경우는 없고, 공백이 연속해서 2번 이상 주어지는 www.acmicpc.net 풀이 코드 s = input() alp = ['U', 'C', 'P', 'C'] i = 0 for a in alp: if a in s: i += 1 s = s[s.index(a) + 1:] else: print('I hate UCPC') break if i == 4: print('I love UCPC') 코드 해석 인덱스 슬라이싱을 이용하여 풀이하였다.
문제 링크 https://www.acmicpc.net/problem/1343 1343번: 폴리오미노 첫째 줄에 사전순으로 가장 앞서는 답을 출력한다. 만약 덮을 수 없으면 -1을 출력한다. www.acmicpc.net 풀이 코드 board = input() board = board.replace("XXXX", "AAAA") board = board.replace("XX", "BB") if 'X' in board: print(-1) else: print(board) 코드 해석 파이썬의 replace 함수를 사용하여 쉽게 풀 수 있다.