Stay Hungry Stay Foolish

프로그래머스 코딩테스트/Level 1 23

[Programmers] L1. 카드 뭉치 (Python)

[문제 링크] 👇  프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이 방법💡Queue 이용cards1와 cards2를 각각 큐처럼 사용하여, 앞에서부터 단어를 꺼냄goal 배열의 각 단어에 대해해당 단어가 cards1의 맨 앞에 있다면 cards1에서 제거그렇지 않고 cards2의 맨 앞에 있다면 cards2에서 제거두 곳 모두에 없다면 "No"를 반환모든 단어를 성공적으로 처리했다면 "Yes"를 반환Solutionfrom collections import dequedef solution(cards1, cards2, goal): answer = "Yes" cards1 = deque(car..

[Programmers] L1. 추억 점수 (Python)

[문제 링크] 👇  프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이 방법photo 에서 한 행씩 꺼내고, 해당 행의 열을 하나씩 꺼내서 이름 리스트에 이름이 있는 경우 점수에 누적시킨다.한 행을 다 돌았으면 점수를 결과 리스트에 추가한다. Solutiondef solution(name, yearning, photo): answer = [] for i in photo: score = 0 for j in i: if j in name: # 해당 이름이 있는 경우 score += yearning[name.index(j)] ..

[Programmers] L1. [1차] 비밀지도 (Python)

[문제 링크] 👇  프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이 방법입력받은 배열을 한 줄씩 순회하며, arr1과 arr2에서 동일한 위치에 있는 숫자 i와 j를 함께 다룬다.i와 j를 각각 n자리 이진수 문자열로 변환한다. 여기서 i를 이진수로 바꾼 후, n자리 형식으로 맞추기 위해 0을 앞에 추가해 준다.변환한 두 이진수 문자열을 한 자리씩 비교같은 위치에 있는 두 비트 값이 둘 중 하나라도 1이면 해당 위치를 #으로, 둘 다 0이면 공백으로 바꾸어 bin_str에 추가bin_str이 완성되면 한 줄의 지도가 생성된 것이므로, 이를 answer에 추가모든 줄에 대해 반복한 후 answer를 ..

[Programmers] L1. 푸드 파이트 대회 (Python)

[문제 링크] 👇 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이 방법💡 2로 나누기 주어진 음식의 양을 두 사람에게 나누어 주어야 하므로 2로 나눈다.  2로 나눈 몫만큼 음식을 순서대로 배치하면 된다. 입력 예시[1, 7, 1, 2]0번째 인덱스는 물의 양이고, 물은 항상 1이므로 신경 쓰지 않는다.1번째 인덱스부터 음식의 양이 주어진다.1번째 인덱스를 2로 나눈 몫은 3이다. 이 말은, 7개의 음식을 3개씩 나누어서 두 사람에게 줄 수 있다는 말이다. 따라서 1을 3만큼 저장한다.2번째 인덱스는 2보다 작으므로 두 사람에게 나누어 줄 수 없다. 따라서 무시한다.3번째 인덱스를 2로 나눈 몫은..

[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