문제 해결
1. 학생들의 정답을 찍는 패턴을 배열에 담는다.
2. 학생들이 찍은 정답과 문제의 정답을 차례차례 비교한다.
(1) 이 때, 학생들의 정답 패턴 길이보다 문제 배열의 길이가 길 경우
(2) 현재의 인덱스를 정답 패턴 길이로 나누고 나머지를 구한다.
(3) 학생들의 정답을 맞출 경우 스코어를 +1씩 올려준다.
3. 세 학생의 스코어중 가장 큰 값을 구하고
4. 가장 큰 값과 학생의 점수가 같으면 정답에 푸쉬 해준다.
🌤 토스 코딩테스트를 준비하기 위해 오늘부터 자바스크립트로 기본적인 문제를 풀며, 언어를 익히기로 했다!
최근 프론트엔드를 맡아 프로젝트를 진행하며 자바스크립트를 많이 사용해서 크게 어렵지 않았지만, 알고리즘을 푸는것과는 많이 달라서 조금 더 공부해야 할 것 같다.
🟢 const vs let
const 는 재선언, 재할당이 모두 불가능하고, let 은 재할당은 가능하다.
let name = 'deok'
console.log(name) // deok
let name = 'duk'
console.log(name) // Uncaught SyntaxError: Identifier 'name' has already been declared
name = 'dduk'
console.log(name) // dduk
// 재선언은 불가능 하지만, 재할당은 가능하다
const name = 'deok'
console.log(name) // deok
const name = 'duk'
console.log(name) // Uncaught SyntaxError: Identifier 'name' has already been declared
name = 'dduk'
console.log(name) // Uncaught TypeError: Assignment to constant variable.
// 재선언, 재할당 모두 불가능
🟤 for문
arr = ['tube', 'ryan', 'con']
for(var i=0; i<arr.length; i++) {
console.log(arr[i])
}
i 는 0 부터, i 가 arr 배열의 길이보다 작을 때 까지, i 를 1씩 증가시킨다. 는 뜻
배열에 인덱스로 접근 하는 방법은 대괄호를 이용한다.
🟡 max함수
const a = 1
const b = 2
const c = 3
var maxNumber = Math.max(a, b, c)
console.log(maxNumber) // 3
var maxNumber = Math.max(5, 6, 6)
console.log(maxNumber) // 6
괄호 안의 숫자 중 가장 큰 값을 반환
소스 코드
function solution(answers) {
var answer = [];
const student1 = [1,2,3,4,5]
const student2 = [2,1,2,3,2,4,2,5]
const student3 = [3,3,1,1,2,2,4,4,5,5]
let student1Score = 0
let student2Score = 0
let student3Score = 0
for(var i=0; i<answers.length; i++) {
var a = i;
if (i >= student1.length) {
a = i % student1.length
}
if (student1[a] == answers[i]) {
student1Score ++
}
if (i >= student2.length) {
a = i % student2.length
}
if (student2[a] == answers[i]) {
student2Score ++
}
if (i >= student3.length) {
a = i % student3.length
}
if (student3[a] == answers[i]) {
student3Score ++
}
}
const maxScore = Math.max(student1Score, student2Score, student3Score)
if (student1Score == maxScore) {
answer.push(1)
}
if (student2Score == maxScore) {
answer.push(2)
}
if (student3Score == maxScore) {
answer.push(3)
}
return answer;
}
console.log(solution([1,2,3,4,5]))
console.log(solution([1,3,2,4,2]))
console.log(solution([1,3,2,4,2,3,4]))
출처: 프로그래머스
문제: https://programmers.co.kr/learn/courses/30/lessons/42840?language=javascript
문제 설명
수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ... 1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한 조건
입출력 예
입출력 예 #1
따라서 가장 문제를 많이 맞힌 사람은 수포자 1입니다. 입출력 예 #2
|
'Algorithm Problem > JavaScript' 카테고리의 다른 글
[JavaScript] 프로그래머스 - 기능개발 (0) | 2020.07.25 |
---|---|
[JavaScript] 프로그래머스 - 체육복 (0) | 2020.07.25 |
[JavaScript] 프로그래머스 - 문자열을 정수로 바꾸기/ 서울에서 김서방찾기/ 같은 숫자는 싫어/ 문자열 내 p와 y의 개수 (0) | 2020.07.23 |
[JavaScript] 프로그래머스 - K번째수 (0) | 2020.07.22 |
[JavaScript] 프로그래머스 - 가운데 글자 가져오기 (0) | 2020.07.21 |