탐욕법(그리디) Lv2. 큰 수 만들기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다. 예를 들어, 숫자 1924에서 수 두 개를 제거하면 [19, 12, 14, 92, 94, 24] 를 만들 수 있습니다. 이 중 가장 큰 숫자는 94 입니다. 문자열 형식으로 숫자 number와 제거할 수의 개수 k가 solution 함수의 매개변수로 주어집니다. number에서 k 개의 수를 제거했을 때 만들 수 있는 수 중 가장 큰 숫자를 문자열 형태로 return 하도록 sol..
연습문제 Lv2. 롤케이크 자르기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 철수는 롤케이크를 두 조각으로 잘라서 동생과 한 조각씩 나눠 먹으려고 합니다. 이 롤케이크에는 여러가지 토핑들이 일렬로 올려져 있습니다. 철수와 동생은 롤케이크를 공평하게 나눠먹으려 하는데, 그들은 롤케이크의 크기보다 롤케이크 위에 올려진 토핑들의 종류에 더 관심이 많습니다. 그래서 잘린 조각들의 크기와 올려진 토핑의 개수에 상관없이 각 조각에 동일한 가짓수의 토핑이 올라가면 공평하게 롤케이크가 나누어진 것으로 생각합니다. 예를 들어, 롤케이크에 4가지 종류의 토핑이 올..
연습문제 Lv2. 귤 고르기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 경화는 과수원에서 귤을 수확했습니다. 경화는 수확한 귤 중 'k'개를 골라 상자 하나에 담아 판매하려고 합니다. 그런데 수확한 귤의 크기가 일정하지 않아 보기에 좋지 않다고 생각한 경화는 귤을 크기별로 분류했을 때 서로 다른 종류의 수를 최소화하고 싶습니다. 예를 들어, 경화가 수확한 귤 8개의 크기가 [1, 3, 2, 5, 4, 5, 2, 3] 이라고 합시다. 경화가 귤 6개를 판매하고 싶다면, 크기가 1, 4인 귤을 제외한 여섯 개의 귤을 상자에 담으면, 귤의 크기의 종류..
1. chr() - 아스키코드 정수값을 character형(문자)으로 변환하는 내장 함수 - ord() 함수의 반대이다 print(chr(65)) # 문자열 'A' 출력 print(chr(97)) # 문자열 'a' 출력 2. ord() - 문자열을 해당 문자의 아스키코드 정수값으로 변환하는 내장 함수 - chr() 함수의 반대이다 print(ord('A')) # 정수 65 출력 print(ord('a')) # 정수 97 출력 * 주로 사용하는 경우 : 문자열 문제에서 알파벳 + 1 해줘야하는 경우가 있을 때 예시 - Java나 C++ 에서는 'a' + 1 해주면 되지만 파이썬에서는 해당되지 않기 때문에 변환 후 계산해주어야 한다. 1) ord('a') = 97 이므로 + 1 계산하면 98 2) chr(9..
재귀 깊이 제한 설정 import sys sys.setrecursionlimit(10 ** 6) 파이썬의 기본 재귀 깊이 제한은 최대 1000까지만 지원하기 때문에 매우 얕다 따라서 함수 호출이 많은 재귀, DFS 문제에서 런타임에러가 나지 않으려면 상단에 위와 같이 설정해주어야한다
1. 2차원 배열 입력받기 row 는 행의 개수, 열은 입력하는 만큼 생성된다 # 방법 1) arr = [list(map(int, input().split()) for _ in range(row)] # 방법 2) arr = [] for i in range(row): arr.append(list(map(int, input().split()))) # 방법 3) for i in range(row): arr[i] = list(map(int, input().split())) 2. 2차원 배열 선언 및 초기화 행이 3이고, 열이 4인 2차원 배열을 모든 원소를 0으로 초기화하여 선언 row = 3 col = 4 arr = [[0 for i in range(col)] for j in range(row)] 출력 [[0..
일반 수학(1) 6단계 - 1193번 분수찾기 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 문제 무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자. X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. 출력 첫째 줄에 분수를 출력한다. 예제 입력 10 14 예제 출력 10 2/4 풀이 → 위 그림과 같은 지그재그 순서로 분수들이 나열되어 있다 1) n번째 분수가 위치한 사선 라인이 몇 번째 ..
일반 수학(1) 4단계 - 2903번 중앙 이동 알고리즘 2903번: 중앙 이동 알고리즘 상근이는 친구들과 함께 SF영화를 찍으려고 한다. 이 영화는 외계 지형이 필요하다. 실제로 우주선을 타고 외계 행성에 가서 촬영을 할 수 없기 때문에, 컴퓨터 그래픽으로 CG처리를 하려고 한다. www.acmicpc.net 문제 상근이는 친구들과 함께 SF영화를 찍으려고 한다. 이 영화는 외계 지형이 필요하다. 실제로 우주선을 타고 외계 행성에 가서 촬영을 할 수 없기 때문에, 컴퓨터 그래픽으로 CG처리를 하려고 한다. 외계 지형은 중앙 이동 알고리즘을 이용해서 만들려고 한다. 알고리즘을 시작하면서 상근이는 정사각형을 이루는 점 4개를 고른다. 그 후에는 다음과 같은 과정을 거쳐서 지형을 만든다. 정사각형의 각 변의..
sys.stdin.readline() - input() 함수를 사용하면 동작 속도가 느려서 시간 초과가 될 수 있다 - 따라서 입력 데이터가 많은 문제는 sys 라이브러리의 readline() 함수를 이용하면 시간 초과를 피할 수 있다 import sys # 하나의 문자열 데이터 입력받기 input_data = sys.stdin.readline().rstrip() # 입력받은 문자열 그대로 출력 print(input_data) rstrip() - 공백 문자 제거해주는 함수 - 소스코드에 readline()으로 입력받으면 입력 후 엔터가 줄 바꿈 기호로 입력되므로, 이 공백 문자를 제거하기 위해 사용한다