Stay Hungry Stay Foolish

프로그래머스 코딩테스트 50

[Programmers] L2. 최솟값 만들기 (Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이 방법💡 A 리스트의 최소와 B 리스트의 최대의 곱, sort() 사용 A 리스트는 오름차순 정렬, B 리스트는 내림차순 정렬한다. 오름차순 정렬A.sort() 내림차순 정렬B.sort(reverse=True) 리스트의 길이만큼 반복문을 돌려 연산을 한다. Solutiondef solution(A, B): answer = 0 A.sort(), B.sort(reverse=True) # 정렬 for i in range(len(A)): answer += A[i] * B[i] return answer  ?..

[Programmers] L2. 올바른 괄호 (스택/큐/Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이 방법1️⃣ ")" 를 만날 때 까지 "(" 를 큐에 넣는다.queue.append(n) 2️⃣ ")" 를 만나면 큐의 맨 뒤에서부터 "(" 를 꺼낸다.단, "(" 를 꺼내기 전에 큐가 비어있지 않은지 확인한다. 큐가 비어있으면 꺼내려고 할 때 에러가 난다.큐가 비어있지 않으면 꺼내고 비어있으면 반복문을 중단시킨다.처음부터 ")" 를 만나면 문자열을 끝까지 확인해도 올바르게 짝지어지지 않기 때문이다. queue.pop() 3️⃣ 큐가 비어있지 않으면 False를 반환하고, 비어있으면 True를 반환한다.  ★ True 예시큐가 비어있으..

[Programmers] L1. 콜라 문제 (Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이아래의 표를 보면 몫과 나머지를 이용해 값을 구할 수 있다. 빈 병 a 개 반납b 병 계산콜라 b 병 받기보유 중인 빈 병 a 개 ① 20 / 2 = 1010 x 1 = 10answer = 10n = 10 + (20 % 2) = 10 ② 10 / 2 = 55 x 1 = 5answer = (10 + 5) = 15n = 5 + (10 % 2) = 5 ③ 5 / 2 = 22 x 1 = 2answer = (15 + 2) = 17n = 2 + (5 % 2) = 3 ④ 3 / 2 = 11 x 1 = 1answer = (17 + 1) = 18n =..

[Programmers] L1. 모의고사 (완전탐색/Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이각 수포자의 패턴 정의각 수포자는 문제를 찍는 일정한 패턴을 가지고 있다.첫 번째 수포자는 [1, 2, 3, 4, 5], 두 번째는 [2, 1, 2, 3, 2, 4, 2, 5], 세 번째는 [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]라는 패턴을 반복하며 답을 찍는다.정답과 비교하여 맞힌 개수 계산주어진 answers 리스트와 각 수포자의 패턴을 반복 비교하여 맞힌 개수를 센다.j 변수를 사용해 각 수포자 패턴의 인덱스를 맞춰 가며 비교하고, j가 패턴 길이에 도달하면 다시 0으로 초기화하여 패턴을 반복한다.모든 수포자의 점수..

[Programmers] L1. 문자열 내 마음대로 정렬하기 (Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이💡 sorted() 와 lambda 사용 sorted와 lambda 를 조합해서 사용한다. strings 리스트의 요소들을 다음 기준에 따라 정렬기본 정렬 기준 : 각 문자열의 n번째 글자를 기준으로 오름차순 정렬보조 정렬 기준 : 만약 n번째 글자가 같은 문자열이 있다면, 전체 문자열을 기준으로 사전순 정렬 lambdan 번째 인덱스 기준으로 정렬하고, 동일한 글자인 경우 문자열 기준으로 추가 정렬key=lambda x: (x[n], x) sorted()strings 오름차순 정렬sorted(strings)  Solutionsol...

[Programmers] L1. 가장 가까운 같은 글자 (Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이1️⃣ 문자열 길이 만큼 반복문을 돌린다. 2️⃣ 문자열 중 현재 위치 전까지 슬라이싱 한 후, 현재 문자가 슬라이싱 한 리스트에 있는지 확인한다. if s[i] not in s[:i]: ...else: ...문자 not in 리스트 : 문자가 리스트에 없으면 True 를 반환문자 in 리스트 : 문자가 리스트에 있으면 True 를 반환 3️⃣ 없으면 -1을 결과 리스트에 추가하고, 있으면 문자열에서 현재 위치 이전부터 맨 앞까지 거꾸로 확인한다. for j in s[i-1::-1]:리스트[start:end:step] : step 에 ..

[Programmers] L1. 삼총사 (Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이💡combinations 함수 사용  combinations는 순서에 상관없이 주어진 길이만큼 원소를 뽑는 모든 조합을 생성해주는 함수이다. itertools 모듈에 포함되어 있어, 이 모듈을 먼저 임포트해야 한다.combinations는 순서를 고려하지 않고 특정 길이만큼 요소를 뽑는 모든 조합을 생성한다.결과는 튜플 형태로 반환되며, list()로 변환하면 전체 조합을 리스트로 볼 수 있다.조합의 길이를 지정해야 하며, itertools 모듈에서 가져와야 사용 가능하다. 기본 구문from itertools import combin..

[Programmers] L1. 예산 (Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이1️⃣ 정렬 리스트를 오름차순으로 정렬한다. 예산 내에서 최대한 많은 요청을 지원하려면, 작은 금액부터 순서대로 처리하는 것이 유리하다. 작은 요청을 먼저 처리해 예산을 조금씩 소진해 나가면 더 많은 항목을 충족할 수 있다.  2️⃣ 예산 차감 및 지원 항목 증가정렬된 금액들을 하나씩 순회하며 budget에서 차감한다.budget이 0보다 작아지는 순간, 현재 예산으로는 이 요청을 처리할 수 없도록 한다. 이때 루프를 종료한다.만약 budget이 0보다 작아지지 않으면, 지원 가능한 항목의 수(answer)를 1 증가시킨다. Solut..

[Programmers] L1. 크기가 작은 부분문자열 (Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이t 의 길이에서 p 의 길이를 뺀 후 + 1 만큼 for문을 돌린다. 만일 t 의 길이가 7이고, p 의 길이가 3일 때 연산을 하면 4이다. 4번째 인덱스까지 확인하기 위해 + 1을 해준다. 이렇게 해주는 이유는, t를 p 만큼의 길이로 슬라이싱을 하기 때문이다.현재 위치(i) 부터 p의 길이 + 현재 위치(i) 까지 자르면 p 만큼의 길이를 확인할 수 있다. 예를 들어 현재 위치가 4라고 할 때, p의 길이인 3과 현재 위치 4를 더하면 7이 된다. 즉 4 번째 인덱스부터 6 번째 인덱스까지 자르는데 6번째 인덱스는 t의 마지막 인..

[Programmers] L1. 부족한 금액 계산하기 (Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이이용료 구하기for i in range(1, count + 1): answer += price * iN배 이므로 1부터 count 까지 처음 이용료인 price에 곱한다.곱한 결과를 더하면서 누적한다. 부족한 금액 출력하기if answer - money > 0: return answer - moneyelse: return 0금액이 부족하지 않을 수도 있다. 따라서 금액이 부족한지 아닌지 구분한다.이용료에서 자신이 가지고 있는 금액인 money를 빼서 그 값이 양수이면,이용료 - 가지고 있는 금액음수이면(false 이면)..

[Programmers] L1. 내적 (Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이zip() 으로 두 개의 배열을 묶어 각각 한 개씩 동시에 빼기 [파이썬 zip() 함수 정리] 👉 https://dev-cloud.tistory.com/345 Solutiondef solution(a, b): answer = 0 for i, j in zip(a, b): answer += i * j return answer  👩‍💻 회고zip() 까지 사용한 건 좋았는데 리스트 컴프리헨션 활용하려다가 마무리가 안 돼서 포기했다. 숏코딩 보니 내가 하는 방법이 맞았다는 거.. 아쉽다.

[Programmers] L1. 음양 더하기 (Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krSolutiondef solution(absolutes, signs): answer = 0 for i in range(len(signs)): if signs[i] == 1: answer += absolutes[i] else: answer -= absolutes[i] return answer  👩‍💻 회고숏코딩 한 거 보니 어나더 레벨if 문에서  == 1 해줄 필요 없이 그냥 if signs[i] 라고만 해줘도 됐었다. 불필요한 코드 추가..

Programmers 약수의 합 (Java/Level 1)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 n return 12 28 5 6 Solution class Solution { public int solution(int n) { int answer = 0; for(int i=1; i

Programmers 서울에서 김서방 찾기 (Python/Level 1)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다. 제한사항 seoul은 길이 1 이상, 1000 이하인 배열입니다. seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다. "Kim"은 반드시 seoul 안에 포함되어 있습니다. 입출력 예 seoul return ["Jane", "Kim"] "김서방은..

Programmers 다음 큰 숫자 (Python/Level 2)

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 자연수 n이 주어졌을 때, n의 다음 큰 숫자는 다음과 같이 정의 합니다. 조건 1. n의 다음 큰 숫자는 n보다 큰 자연수 입니다. 조건 2. n의 다음 큰 숫자와 n은 2진수로 변환했을 때 1의 갯수가 같습니다. 조건 3. n의 다음 큰 숫자는 조건 1, 2를 만족하는 수 중 가장 작은 수 입니다. 예를 들어서 78(1001110)의 다음 큰 숫자는 83(1010011)입니다. 자연수 n이 매개변수로 주어질 때, n의 다음 큰 숫자를 return 하는 solution 함수를 완성해주세요. 제한사항 n..