Problem Solving/Programmers

Problem Solving/Programmers

[프로그래머스 / JS] 올바른 괄호 - Level 2

🚩 문제 주소 📄 접근 방법 스택 더보기 answer라는 빈 배열을 만듭니다. answer 배열에 문자열을 하나 씩 넣어줍니다. answer 배열에 괄호가 2개 이상 있고, 뒤에서 2번째가 (, 뒤에서 1번째가 )일 경우에 pop 2번 해서 2개를 제거해줍니다. 반복을 종료하고 answer에 괄호가 남아있으면 짝이 남아있다는 것이므로 false를 반환하고, 아니라면 true를 반환합니다. 👨‍💻 나의 코드 function solution(s){ const answer = []; for (let i=0;i

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: ..