Programmers

Problem Solving/Programmers

[프로그래머스 / JS] 추억 점수 - Level 1

🚩 추억 점수 📄 접근 방법 해시 더보기 객체를 이용하면 아주 간단히 풀 수 있는 문제입니다. names 배열의 값을 key로, yearning의 값을 value로 하는 객체를 생성합니다. photos 배열을 순회하여 각 배열을 탐색합니다. 각 배열의 값이 만들어 놓은 scoreBoard 객체에 key로 존재한다면 value를 cnt에 더해줍니다. 전부 탐색했다면 answer에 더해준 cnt를 push합니다. answer를 반환합니다. 👨‍💻 나의 코드 function solution(names, yearning, photos) { const answer = []; const scoreBoard = {}; names.forEach((name, idx) => { if (!scoreBoard[name]) s..

Problem Solving/Programmers

[프로그래머스 / JS] 구명보트 - Level 2

🚩 문제 주소 구명보트 📄 접근 방법 투 포인터 더보기 핵심: 가장 무거운 사람과 가장 가벼운 사람을 묶어서 판단하는게 제일 최소 결과가 나옵니다. 1. 주어진 사람들 배열을 오름차순으로 정렬합니다. 2. left 포인터는 0, right 포인터는 배열의 길이 - 1 으로 할당합니다. 3. left포인터가 right포인터가 같지 않을 때만 아래의 과정을 반복합니다. 정렬배열[left](가장 가벼운 사람) + 정렬배열[right](가장 무거운 사람)이 주어진 limit보다 작다면, 보트에 두명 다 탈 수 있다는 것이므로 left포인터는 1 늘려주고 right포인터는 1 낮춰줍니다. limit보다 크다면 한명만 탈 수 있으므로 무거운 사람을 보내야 합니다. 따라서 right포인터만 1 낮춰줍니다. 판별이 끝..

Problem Solving/Programmers

[프로그래머스 / Python, JS] 키패드 누르기 - Level 1

🚩 문제 주소 https://programmers.co.kr/learn/courses/30/lessons/67256 (2022년 1월 1일에 푼 문제입니다.) 📄 접근 방법 구현 더보기 findDistance 함수를 만들어 줍니다. 1-1. 딕셔너리를 활용해서 현재 번호와 누른 번호를 받아서 거리 계산을 합니다. #에서 시작합니다. 1,4,7은 L, 3,6,9는 R을 answer에 저장합니다. 2,5,8,0은 findDistance함수를 활용해서 l의 거리가 r의 거리보다 길면 answer에 R을 저장하고, r의 거리가 l의 거리보다 길면 answer에 L을 저장합니다. 두 개가 같은 경우, hand가 left일 경우 L, right인 경우 R을 저장합니다. answer를 리턴합니다. 👨‍💻 나의 코드 ..

Problem Solving/Programmers

[프로그래머스 / Python] 숫자 문자열과 영단어 - Level 1

🚩 문제 주소 DI String Match (2021년 12월 31일에 푼 문제입니다.) 📄 접근 방법 딕셔너리 더보기 딕셔너리를 먼저 만들어 줍니다. 숫자를 발견하면 answer에 저장합니다. 아니라면 temp에 하나씩 저장합니다. 3-1. 저장하다가 딕셔너리의 key와 같아지면 value를 answer에 저장하고 temp를 초기화합니다. answer를 int로 변환한 뒤 출력합니다. 👨‍💻 나의 코드 def solution(s): temp = '' answer = '' dic = {'zero': 0, 'one': 1, 'two': 2, 'three': 3, 'four': 4, 'five': 5, 'six': 6, 'seven': 7, 'eight': 8, 'nine': 9} for i in s: if..

Problem Solving/Programmers

[프로그래머스 / Python] 다트 게임 - Level 1

🚩 문제 주소 https://programmers.co.kr/learn/courses/30/lessons/17682 (2021년 12월 31일에 푼 문제입니다.) 📄 접근 방법 구현 더보기 10은 '1','0'으로 따로 저장되기 때문에 다른 문자로 바꿔서 저장합니다. dartResult를 for문으로 각 문자마다 조건을 확인합니다. 2-1. 숫자로 나타낼 수 있는 문자면 숫자로 바꿔서 stack에 저장합니다. 2-2. 10에 해당하는 문자가 확인되면 숫자 10으로 바꿔서 저장합니다. 2-3. S,D,T에 해당하면 answer리스트에 stack에 있는 숫자를 pop해서 각 조건에 해당하는 거듭제곱만큼 곱해서 저장합니다. 2-4. 일 경우, 첫번째 이 아니면 해당하는 answer와 그 전 answer를 2배..

Problem Solving/Programmers

[프로그래머스 / Python] 비밀지도 - Level 1

🚩 문제 주소 https://programmers.co.kr/learn/courses/30/lessons/64061 (2021년 12월 30일에 푼 문제입니다.) 📄 접근 방법 구현 더보기 arr1, arr2를 2진수로 변환해서 저장합니다. arr1, arr2 각 원소끼리 비교해서 둘 다 0인 것을 제외하고 1로 바꿔서 새로운 배열에 저장합니다. 1은 #으로 0은 공백으로 바꿔서 출력합니다. 👨‍💻 나의 코드 # arr1, arr2을 2진수로 변환해서 저장하는 함수 def convert(n, arr, result): for i in range(n): result.append(bin(arr[i])) result[i] = result[i][2:] while len(result[i]) != n: result[..

Problem Solving/Programmers

[프로그래머스 / Python] 크레인 인형뽑기 게임 - Level 1

🚩 문제 주소 https://school.programmers.co.kr/learn/courses/30/lessons/64061 (2021년 12월 30일에 푼 문제입니다.) 📄 접근 방법 그리디 더보기 moves배열 숫자대로 보드의 열을 움직입니다. 그 열에서 0이 아닌 숫자가 나올때까지 내려갑니다. 찾으면 바구니배열에 그 숫자를 저장하고 숫자가 있는 자리는 0으로 바꿔줍니다. 위 과정을 반복합니다. 바구니 배열에 같은 숫자가 저장되면 두 숫자 모두 삭제하고 result+=2 👨‍💻 나의 코드 def solution(board, moves): answer = 0 bucket = [] for i in moves: for j in range(len(board)): if board[j][i-1] != 0: ..

Problem Solving/Programmers

[프로그래머스 / JS] 큰 수 만들기 - Level 2

🚩 문제 주소 https://school.programmers.co.kr/learn/courses/30/lessons/42883 📄 접근 방법 그리디 더보기 stack 배열을 빈배열로 생성합니다. number 배열을 for...of문으로 순회합니다. k가 0보다 크고 stack배열의 끝 원소가 현재 탐색한 number배열의 원소보다 작다면 stack배열에서 원소를 pop 합니다. ( 큰 숫자를 만들어야 하기 때문에) 숫자를 제거 했으므로 k도 1 감소시켜줍니다. 조건을 만족하지 않는다면 크거나 같다는 것이기 때문에, 숫자를 push합니다. 이 부분은 엣지 케이스인데, number 배열을 전부 순회했는데 k가 남는 경우도 있습니다. 따라서 숫자들이 모아진 stack 배열의 뒤에서 부터 k만큼 지워줍니다...

애송이개발자
'Programmers' 태그의 글 목록 (2 Page)