본문 바로가기

코딩테스트/프로그래머스13

[프로그래머스][Lv.2][Python] 최댓값과 최솟값 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12939 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 방식 split 하고 min, max 함수로 결과 return 3. 코드 def solution(s): list_s = [int(x) for x in s.split(" ")] return f'{min(list_s)} {max(list_s)}' 4. 결과 2022. 10. 1.
[프로그래머스][Lv.2][Python] 땅따먹기 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12913 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근방식 DP문제이다. 바텀업 방식으로 해결하면 좋다. 점화식 : 4개의 열(Column) 중 현재 열과 같은 열을 제외한 나머지 값 중 최대값을 현재값에 더한다. for j in range(4): land[i][j] += max([land[i-1][x] for x in list({0, 1, 2, 3} - {j})]) 가장 큰 합들이 마지막 열에 반영되었기 때문에 가장 아래 열에서.. 2022. 10. 1.
[프로그래머스][Lv.2][Python] 카펫 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근방식 주어진 brown과 yellow의 개수는 해당 색 부분의 넓이와 같다. 가로를 x, 세로를 y라고 할 때, 주어진 brown과 yellow의 조합으로 xy와 x+y를 알 수 있다. 간단한 이차방정식을 만들고 이후는 완전탐색으로 값을 찾음 3. 코드 def solution(brown, yellow): answer = [] x_y = int(brown / 2) + 2 xy =.. 2022. 10. 1.
[프로그래머스][Lv.2][Python] 올바른 괄호 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 방식 괄호가 "("면 push 한다. 괄호가 ")"면 pop한다. 문자열의 반복이 끝났을 때, 스택에 값이 남아있다면 잘못된 괄호이다. 3. 코드 def solution(s): list_stack = [] for ch in s: if ch == "(": list_stack.append(ch) else: if list_stack == []: return False else: l.. 2022. 10. 1.
[프로그래머스][Lv.2][Python] H-Index 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/42747 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 방식 H-Index는 N편의 논문중 H번 인용된 논문이 H편 이상일 때의 최대값을 의미한다. 논문의 순서는 중요하지 않다. H-Index는 내부의 인용된 회수와 같지 않을 수도 있다. 3. 코드 def solution(citations): citations = list(reversed(sorted(citations))) len_citations = len(citations) .. 2022. 10. 1.
[프로그래머스][Lv.1][Python] 다트 게임 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/17682 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 방식 S, D, T, *, #을 공백을 포함하여 replace 후 공백으로 split 해주면 서로 분리됨(마지막 공백은 제거) 각 기호에 맞는 점수를 제곱해서 정수로 변경해줌 *은 현재와 이전 값에 *2 (해당 범위에 * 이나 다른 기호가 포함될 경우도 고려해서 미리 정수로 변경해줌) #은 0으로 변경 후 현재 값에 -1 정수로 변환된 전체 리스트를 합쳐줌 -> 총점 3. 코.. 2022. 9. 25.
[프로그래머스][Lv.1][Python] 3진법 뒤집기 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/68935 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 방식 10진법을 2진법으로 만들때와 비슷하게 3으로 나눈 나머지를 리스트에 추가 역순으로 들어갔기 때문에 문제에서 요구하는 앞뒤 반전은 생략 해당 자리에 맞게 3의 제곱수를 곱해서 누적해줌 3. 코드 def solution(n): answer = 0 tmp = [] # 3^0:1, 3^1:3, 3^2:9, 3^3:27, 3^4:81... while(n!=0): tmp.appe.. 2022. 9. 20.
[프로그래머스][Lv.1][Python] 최대공약수와 최소공배수 1. 문제 https://school.programmers.co.kr/learn/courses/30/lessons/12940 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 2. 접근 방식 최대 공약수 : 두 수 이상의 여러 수의 공약수 중 최대인 수 -> n과 m에 동시에 나눠지는 i 중 가장 큰 값 최소 공배수 : 두 수 이상의 여러 수의 공배수 중 최소인 수 -> n과 m을 곱한 값을 최대 공약수로 나눈 값 (유클리드 호제법) 더 쉬운 방법 : math 패키지 활용 import math math.gcd(a, b) math.lcm(a, b) 3. 코드 .. 2022. 9. 20.
[프로그래머스][SQL] 고득점 kit 프로그래머스 SQL 고득점 Kit Select : https://programmers.co.kr/learn/courses/30/parts/17042 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr -- 1. 모든 레코드 조회하기 SELECT * from animal_ins order by animal_id asc -- 2. 역순 정렬하기 SELECT Name, datetime from animal_ins order by animal_id desc -- 3. 아픈 동물 찾기 SELECT animal_id, name from animal_ins where in.. 2022. 3. 5.
[프로그래머스][Lv.3][Cpp] 네트워크 1. 문제 https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 2. 접근 방식 입력 받은 인접 행렬에 몇개의 그래프가 존재하는지를 묻는 문제 BFS를 수행 후에도 방문하지 않은 노드가 남아 있다면 다른 그래프가 존재한다고 판단함 (방문하지 않은 노드가 없을 때까지 반복하여 탐색) 인접 행렬 형식의 2차원 Vector를 인접리스트 형식으로 변경 후 BFS 수행 3. 코드 #include #include #in.. 2022. 2. 6.
[프로그래머스][Lv.2][Python] 타겟 넘버 1. 문제 (레벨 2) https://programmers.co.kr/learn/courses/30/lessons/43165 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr 2. 접근 방식 BFS/ DFS 카테고리에 있는 문제지만, 해당 탐색 알고리즘으로 해결할 방법이 떠오르지 않아 완전탐색으로 구현 +, - 부호를 이진수로 표현하여 모든 경우에 대해 연산한 뒤 개수를 카운팅함 통과는 했지만 메모리와 시간에 제한이 있다면 실패할 듯 함 3. 코드 def solution(numbers, .. 2022. 2. 6.
[프로그래머스][Lv.3][Python] 단어변환 1. 문제 https://programmers.co.kr/learn/courses/30/lessons/43163 코딩테스트 연습 - 단어 변환 두 개의 단어 begin, target과 단어의 집합 words가 있습니다. 아래와 같은 규칙을 이용하여 begin에서 target으로 변환하는 가장 짧은 변환 과정을 찾으려고 합니다. 1. 한 번에 한 개의 알파벳만 바꿀 수 programmers.co.kr 2. 코드 def dfs(begin, target, words, visited): str_end = target str_start = begin int_depth = 0 arr_stack = [str_start] while arr_stack: str_top = arr_stack.pop() print(str_t.. 2021. 10. 21.
[프로그래머스][Lv.1][Python] K번째 수 1. 문제 https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 2. 코드 def solution(array, commands): answer = [] for cmd in commands: answer.append((lambda i, j : sorted(array[i-1:j]))(cmd[0], cmd[1])[cmd[2]-1]) return answer 3. 결과 2021. 10. 21.