JavaScript 105

프로그래머스 영어가 싫어요 JS ( 객체리터럴, Object.keys() / split()과 join()을 replace처럼 사용하기 )

문제 설명 영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요. 🙋‍♀️ 내 생각 문제를 보고 각각에 해당되는 값들을 대체하기 위해서 replace()를 써야겠다고 생각했다. 그리고 replace()를 쓰기 위해서 zero=0, one=1과 같이 해당되는 값들을 연결하기 위해서 객체를 만들었다. ✅ 내 코드 function solution(numbers) { const obj = { zero: 0, one: 1, two: 2, three: 3, four: 4, five: 5, six: 6, seven: 7, eight: 8, nine: 9 } const ..

프로그래머스 추억 점수 JS ( 객체 프로퍼티 할당하기, 각각 다른 배열 index로 연결하기 )

문제 설명 사진들을 보며 추억에 젖어 있던 루는 사진별로 추억 점수를 매길려고 합니다. 사진 속에 나오는 인물의 그리움 점수를 모두 합산한 값이 해당 사진의 추억 점수가 됩니다. 예를 들어 사진 속 인물의 이름이 ["may", "kein", "kain"]이고 각 인물의 그리움 점수가 [5점, 10점, 1점]일 때 해당 사진의 추억 점수는 16(5 + 10 + 1)점이 됩니다. 다른 사진 속 인물의 이름이 ["kali", "mari", "don", "tony"]이고 ["kali", "mari", "don"]의 그리움 점수가 각각 [11점, 1점, 55점]]이고, "tony"는 그리움 점수가 없을 때, 이 사진의 추억 점수는 3명의 그리움 점수를 합한 67(11 + 1 + 55)점입니다. 그리워하는 사람의 ..

프로그래머스 수 조작하기 2 JS ( for문 / 객체활용하기 )

문제 설명 정수 배열 numLog가 주어집니다. 처음에 numLog[0]에서 부터 시작해 "w", "a", "s", "d"로 이루어진 문자열을 입력으로 받아 순서대로 다음과 같은 조작을 했다고 합시다. "w" : 수에 1을 더한다. "s" : 수에 1을 뺀다. "d" : 수에 10을 더한다. "a" : 수에 10을 뺀다. 그리고 매번 조작을 할 때마다 결괏값을 기록한 정수 배열이 numLog입니다. 즉, numLog[i]는 numLog[0]로부터 총 i번의 조작을 가한 결과가 저장되어 있습니다. 주어진 정수 배열 numLog에 대해 조작을 위해 입력받은 문자열을 return 하는 solution 함수를 완성해 주세요. 🙋‍♀️ 내 생각 numLog의 배열을 돌면서 하나뒤의 인덱스와 앞의 인덱스의 차를 통..

프로그래머스 푸드파이트 대회 JS ( 중첩for문 )

문제 설명 수웅이는 매달 주어진 음식을 빨리 먹는 푸드 파이트 대회를 개최합니다. 이 대회에서 선수들은 1대 1로 대결하며, 매 대결마다 음식의 종류와 양이 바뀝니다. 대결은 준비된 음식들을 일렬로 배치한 뒤, 한 선수는 제일 왼쪽에 있는 음식부터 오른쪽으로, 다른 선수는 제일 오른쪽에 있는 음식부터 왼쪽으로 순서대로 먹는 방식으로 진행됩니다. 중앙에는 물을 배치하고, 물을 먼저 먹는 선수가 승리하게 됩니다. 이때, 대회의 공정성을 위해 두 선수가 먹는 음식의 종류와 양이 같아야 하며, 음식을 먹는 순서도 같아야 합니다. 또한, 이번 대회부터는 칼로리가 낮은 음식을 먼저 먹을 수 있게 배치하여 선수들이 음식을 더 잘 먹을 수 있게 하려고 합니다. 이번 대회를 위해 수웅이는 음식을 주문했는데, 대회의 조건..

프로그래머스 날짜 비교하기 JS ( if문 / new Date() / 뺄셈 )

문제 설명 정수 배열 date1과 date2가 주어집니다. 두 배열은 각각 날짜를 나타내며 [year, month, day] 꼴로 주어집니다. 각 배열에서 year는 연도를, month는 월을, day는 날짜를 나타냅니다. 만약 date1이 date2보다 앞서는 날짜라면 1을, 아니면 0을 return 하는 solution 함수를 완성해 주세요. 🙋‍♀️ 내 생각 date1의 연도와 date2의 연도를 비교한 뒤, 달을 비교하고, 날짜를 순차적으로 비교하여 0또는 1을 반환하도록 만들었다. 이를 위한 적당한 메서드는 생각이 나지 않아서, if문을 통해서 일일이 경우를 나눠서 코드를 만들었다. 우선 연도가 data1의 연도가 date2의 연도보다 작은경우와 아닌경우를 가장 크게 나누고, 또 그 안에서도 만..

프로그래머스 369게임 JS ( 반복문 사용을 위해 number를 이터러블한 타입으로 변환하기 )

문제 설명 머쓱이는 친구들과 369게임을 하고 있습니다. 369게임은 1부터 숫자를 하나씩 대며 3, 6, 9가 들어가는 숫자는 숫자 대신 3, 6, 9의 개수만큼 박수를 치는 게임입니다. 머쓱이가 말해야하는 숫자 order가 매개변수로 주어질 때, 머쓱이가 쳐야할 박수 횟수를 return 하도록 solution 함수를 완성해보세요. 🙋‍♀️ 내 생각 order의 타입은 number이다. order에 3,6,9를 포함하는지 검사한 뒤, 원하는 처리를 하기 위해서는 for문이나 map과 같이 반복문을 써야하는데, 반복문은 string이나 array와 같이 이터러블하여 순회가 가능한 타입에만 사용할 수 있다. 따라서 이 문제를 풀기 위해서는 number타입으로 들어오는 매개변수를 이터러블한 값으로 먼저 바꾼..

프로그래머스 커피 심부름 JS ( switch로 case나누기 / 삼항연산자로 case제외하기 )

문제 설명 팀의 막내인 철수는 아메리카노와 카페 라테만 판매하는 카페에서 팀원들의 커피를 사려고 합니다. 아메리카노와 카페 라테의 가격은 차가운 것과 뜨거운 것 상관없이 각각 4500, 5000원입니다. 각 팀원에게 마실 메뉴를 적어달라고 하였고, 그 중에서 메뉴만 적은 팀원의 것은 차가운 것으로 통일하고 "아무거나"를 적은 팀원의 것은 차가운 아메리카노로 통일하기로 하였습니다. 각 직원이 적은 메뉴가 문자열 배열 order로 주어질 때, 카페에서 결제하게 될 금액을 return 하는 solution 함수를 작성해주세요. order의 원소는 아래의 것들만 들어오고, 각각의 의미는 다음과 같습니다. 🙋‍♀️ 내 생각 제일 처음 문제를 보고, 가격이 2가지이기때문에 2가지경우로 나누어야겠다는 생각이 들었다...

프로그래머스 두 개 뽑아서 더하기 JS ( 중첩 for문, Set객체, sort() )

문제 설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 🙋‍♀️ 내 생각 각각 다른 인덱스의 값을 돌아가면서 더해주기 위해서 중첩for문을 사용했다. 자바스크립트에서 중복값제거와 정렬하는 방법을 알고 있다면 이 부분은 쉽게 풀수있는것 같다. ✅ 내 코드 function solution(numbers) { let result=[]; for(i=0; ia-b)는 오름차순 정렬을 해준다. 만약 반대로 내림차순을 하고 싶으면 b-a를 한다. ✔️ 개선할 점 빈배열을 담을 변수의 이름은 result라고 지었는데, 최종값은 아니기때문에 임시적으로..

프로그래머스 qr code JS ( for문, map() / filter() )

문제 설명 두 정수 q, r과 문자열 code가 주어질 때, code의 각 인덱스를 q로 나누었을 때 나머지가 r인 위치의 문자를 앞에서부터 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요. 🙋‍♀️ 내 생각 code를 순회하면서 인덱스/q의 나머지가 r인지 아닌지를 확인한 뒤, r인 문자열만 이어붙여야 한다. code를 순회하기 위해서 for문과 map, forEach가 생각났다. 먼저 for문으로 순회하는 코드를 짜고나서 map과 forEach로도 바꾸어 보았다. ✅ 내 코드 1 function solution(q, r, code) { let result ='' for(i=0; ii%q === r? result += v : result ) return result ..

프로그래머스 중복된 문자 제거 JS ( set객체, new Set() )

문제 설명 문자열 my_string이 매개변수로 주어집니다. my_string에서 중복된 문자를 제거하고 하나의 문자만 남긴 문자열을 return하도록 solution 함수를 완성해주세요. ✅ 내 코드 function solution(my_string) { return [...new Set(my_string)].join('') } 이터러블에서 중복된 값을 제거하는것을 쉽게해주는 메서드가 있다. 바로 new Set()이다. 이런 메서드가 있는건 알았는데 나도 이렇게 사용해본적은 처음이라서 정리해보았다. 💻 학습한 것 new Set(): new Set()은 JavaScript의 내장 객체인 Set을 생성하는 방법 중 하나 new Set()을 호출하여 빈 Set 객체를 생성할 수 있다 Set 객체는 중복된 값..