GitHub

https://github.com/Choidongjun0830

파이썬 알고리즘 문제 풀이 228

[프로그래머스] 가장 큰 수 🙁

가장 큰 수 문제 설명 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 수는 6210입니다. 0 또는 양의 정수가 담긴 배열 numbers가 매개변수로 주어질 때, 순서를 재배치하여 만들 수 있는 가장 큰 수를 문자열로 바꾸어 return 하도록 solution 함수를 작성해주세요. def solution(numbers): answer = '' str_list = list(map(str, numbers)) str_list.sort(key=lambda x: x*3,reverse=True) answer = str..

[프로그래머스] K번째수

K번째수 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요. 내 풀이 def solution(array, commands): answer = [] for command in commands: i,j,k = command[0], ..

[프로그래머스] 같은 숫자는 싫어

같은 숫자는 싫어 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다. 예를 들면, arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다. arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다. 배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요. 내 풀이 def solution(arr): answer = [] for i in arr: length ..

Baekjoon Online Judge 1874번 파이썬

문제 링크 https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 정답 코드 import sys n = int(sys.stdin.readline()) current = 1 stack = [0] answer = [] temp = True for i in range(n): target = int(sys.stdin.readline().strip()) while current

Baekjoon Online Judge 9093

문제 링크 https://www.acmicpc.net/problem/9093 9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 www.acmicpc.net 정답 코드 import sys T = int(sys.stdin.readline()) for i in range(T): string = sys.stdin.readline().rstrip().split() for j in string: #한 단어씩 나누기 print(j[::-1], end=' ') #단어를 뒤집어 출력 print()

Baekjoon Online Judge 4256번 파이썬. 분할정복.

문제 링크 https://www.acmicpc.net/problem/4256 4256번: 트리 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 노드의 개수 n이 주어진다. (1 ≤ n ≤ 1,000) BT의 모든 노드에는 1부터 n까지 서로 다른 번호가 매겨져 있다. 다음 www.acmicpc.net 전위순회한 결과의 맨 앞 노드는 전체 트리의 루트이다. 중위순회한 결과에서 전체 트리의 루트를 기준으로 왼쪽은 왼쪽 서브트리이고, 오른쪽은 오른쪽 서브트리이다. 후위순회는 왼쪽, 오른쪽, 루트 순으로 출력하는 것이다. 그래서 전체 트리의 루트(root)를 기준으로 왼쪽 먼저 함수를 실행하고, 다음으로 오른쪽을 실행한다. 그리고 마지막에 root를 출력한다. 정답 코드 impo..

Baekjoon Online Judge 17829번 파이썬. 분할정복.

문제링크 https://www.acmicpc.net/problem/17829 17829번: 222-풀링 조기 졸업을 꿈꾸는 종욱이는 요즘 핫한 딥러닝을 공부하던 중, 이미지 처리에 흔히 쓰이는 합성곱 신경망(Convolutional Neural Network, CNN)의 풀링 연산에 영감을 받아 자신만의 풀링을 만들고 이를 22 www.acmicpc.net 'divide=size//2'로 정사각형을 4등분을 할 수 있도록 하였다. 그리고 dnc함수에서 lefttop,righttop,leftbottom,rightbottom으로 나누어 진행될 수 있도록 하였다. 정답코드 import sys N = int(sys.stdin.readline()) nums = [] for i in range(N): nums.ap..

Baekjoon Online Judge 2448번 파이썬. 분할 정복.

문제 링크 https://www.acmicpc.net/problem/2448 2448번: 별 찍기 - 11 첫째 줄에 N이 주어진다. N은 항상 3×2k 수이다. (3, 6, 12, 24, 48, ...) (0 ≤ k ≤ 10, k는 정수) www.acmicpc.net 빨간 부분과 주황 부분, 두개의 공간으로 나누어 풀었다. 정답 코드 import sys N = int(sys.stdin.readline()) def draw_stars(N): if N == 3: return [" * "," * * ","*****"] divide = draw_stars(N//2) stars = [] for d in divide: #빨간 공간 stars.append(' '*(N//2)+d+' '*(N//2)) for d in..

Baekjoon Online Judge 2447번 파이썬. 분할 정복.

문제 링크 https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 빨간 부분을 상, 주황 부분을 중, 노란 부분을 하로 생각해서 3구간으로 나누어 풀었다. 정답 코드 import sys N = int(sys.stdin.readline()) def dnc(N): if N == 1: return ["*"] divide = dnc(N//3) stars = [] for d in divide: #상 stars.append(d*3) f..

Baekjoon Online Judge 11728번

문제 링크 https://www.acmicpc.net/problem/11728 11728번: 배열 합치기 첫째 줄에 배열 A의 크기 N, 배열 B의 크기 M이 주어진다. (1 ≤ N, M ≤ 1,000,000) 둘째 줄에는 배열 A의 내용이, 셋째 줄에는 배열 B의 내용이 주어진다. 배열에 들어있는 수는 절댓값이 109보다 작거 www.acmicpc.net 정답 코드 import sys n,m = map(int,sys.stdin.readline().split()) N = list(map(int,sys.stdin.readline().split())) M = list(map(int,sys.stdin.readline().split())) result = N + M result = sorted(result) p..

728x90