문제 https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LrsUaDxcDFAXc SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 설계 - 뒤에서부터 탐색, max값이 갱신되면 그 다음부터 다시 매입 및 판매 T = int(input()) for TC in range(1, T + 1): N = int(input()) arr = list(map(int, input().split())) gold = [] # 매입 가격을 저장하기 위해 리스트 사용 answer = 0 maxV = arr[-1] for i in range(N-1..
문제https://school.programmers.co.kr/learn/courses/30/lessons/68644 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 설계- 모든 경우의 수를 조사하는 방법 채택파이썬def solution(numbers): answer = [] for i in range(len(numbers)-1): # 현재 기준 다음의 숫자들과 더하기 위해 -1까지만 탐색 for j in range(i+1, len(numbers)): # 현재 기준 이후의 숫자들과 더해본다. if nu..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/12899 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 - 3진법으로 전환 후 0 -> 4, 1 -> 1, 2 -> 2로 치환하는 아이디어를 생각했다. - 하지만 3진법으로 변환시 뭔가 꼬여 제대로된 변환이 불가, "n을 한번 나눌때마다 -1씩 해주면 꼬이지 않는다."는 규칙을 검색으로 알게 되었다. ※ 참고 블로그 : https://geonlee.tistory.com/77 def solution(n): number = ['1', '2', ..
문제https://school.programmers.co.kr/learn/courses/30/lessons/131127 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 파이썬- discount를 10개씩 잘라서 want의 개수만큼 있는지 비교def solution(want, number, discount): answer = 0 for i in range(len(discount) - len(want)): bucket = discount[i:i + 10] # discount를 10개씩 bucket에 담아 확인 index,..
문제 https://www.acmicpc.net/problem/9095 9095번: 1, 2, 3 더하기 각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다. www.acmicpc.net 설계 - DP - 주어진 수의 3가지 경우의 수를 묶어 더하면 해당 수의 경우의 수를 나타낸다. # 1 2 3 4 5... (number) # 1 2 4 7 13... (total) # 1 + 2 + 4 = 7 # 2 + 4 + 7 = 13 N = int(input()) arr = [int(input()) for _ in range(N)] for i in range(N): number = [1, 2, 4] if arr[i]
문제 https://www.acmicpc.net/problem/2748 2748번: 피보나치 수 2 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 설계 N = int(input()) if N == 1: print(1) else: now, next = 0, 1 for i in range(N-1): now, next = next, now + next print(next) - 한줄로 적지 않으면 먼저 복사된 now가 계산되므로 동시에 연산해야한다. # 다음 숫자가 복사된다. for i in range(N-..
문제 https://www.acmicpc.net/problem/1303 1303번: 전쟁 - 전투 첫째 줄에는 전쟁터의 가로 크기 N, 세로 크기 M(1 ≤ N, M ≤ 100)이 주어진다. 그 다음 두 번째 줄에서 M+1번째 줄에는 각각 (X, Y)에 있는 병사들의 옷색이 띄어쓰기 없이 주어진다. 모든 자리에는 www.acmicpc.net 설계 - bfs로 연결되어있는 색상 개수 count def bfs(x, y, team): global visit, arr visit[x][y] = 1 q = [(x, y)] score = 1 # bfs 들어오자마자 1칸 체크 while q: x, y = q.pop(0) for i in range(4): dx = [-1, 0, 1, 0] dy = [0, 1, 0, -1..
문제 https://www.acmicpc.net/problem/1758 1758번: 알바생 강호 첫째 줄에 스타박스 앞에 서 있는 사람의 수 N이 주어진다. N은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 총 N개의 줄에 각 사람이 주려고 하는 팁이 주어진다. 팁은 100,000보다 작거나 같 www.acmicpc.net 설계 - 가장 큰 수가 앞으로 오도록 내림차순으로 정렬, 가장 큰 점수의 손실을 최대한 줄이는 방법을 선택했다. N = int(input()) arr = [int(input()) for _ in range(N)] arr.sort(reverse=True) tips = 0 for i in range(N): if arr[i] - i < 0: pass else: tips += (a..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/12930 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설계 - 문자열의 인덱스가 아니라 공백으로 구분되는 각 단어 기준 짝홀을 구분해야 한다. - 공백이 연속으로 오는 경우를 생각하여 홀짝을 잘 구분해야 한다. def solution(s): arr = list(s) index = 0 # 홀짝을 비교하는 index for i in range(len(arr)): if arr[i] == ' ': index = 0 # 공백일 경우 index 초기화 e..
문제 https://www.acmicpc.net/problem/9342 9342번: 염색체 상근이는 생명과학 연구소에서 염색체가 특정한 패턴인지를 확인하는 일을 하고 있다. 염색체는 알파벳 대문자 (A, B, C, ..., Z)로만 이루어진 문자열이다. 상근이는 각 염색체가 다음과 같은 규칙 www.acmicpc.net 설계 - 조건들을 순서대로 정의한다. - 첫번째 알파벳이 A, F, C가 아닌 경우 제거한다. N = int(input()) arr = [list(input()) for _ in range(N)] index = ['A', 'B', 'C', 'D', 'E', 'F'] condition = ['A', 'F', 'C'] for i in range(N): cnt = 0 # 규칙을 몇번 통과했는지..