hackerrank 에서 문제를 풀어보았다. 언어는 javascript로 설정했다.
사유: 코딩 테스트 준비 겸 연습하자는 의미이다.
알고리즘 문제는 아니지만 생각을 요구하는 문제 및 자바스크립트 문법을 알고 있어야 한다. (메서드나 클래스 등)
오늘은 Day4: Count Objects 라는 문제를 풀어보겠다.
푼 문제는 더 많은데 하나 집어서 미리 게시하고 나중에 더 작성해야지.
문제:
objects
가 매개변수로 들어오는데 objects
안에는 x
와 y
가 있다. x
, y
가 서로 똑같은 정수이면 count
를 +1
해주면 되는 간단한 문제이다.
(실제 사이트 문제는 영어이고 위는 내가 독해한 글을 쓴 것)
/*
* Return a count of the total number of objects 'o' satisfying o.x == o.y.
*
* Parameter(s):
* objects: an array of objects with integer properties 'x' and 'y'
*/
function getCount(objects) {
}
getCount
함수 안에 작성하면 되는데, test input
은 다음과 같다.
[
{ x: 1, y: 1 },
{ x: 2, y: 3 },
{ x: 3, y: 3 },
{ x: 3, y: 4 },
{ x: 4, y: 5 }
]
그럼, 저 input
을 보고 문제를 풀어보자.
우선, 배열로 들어오는 값을 하나하나 순회해주어야 하니 for
구문을 사용하겠다. 또한 x
와 y
의 값이 같으면 count
의 값을 +1
해야하니 이것도 변수로 빼주었다.
function getCount(objects) {
let cnt=0; //초기값 0
for(let i=0; i<objects.length; i++){
// objects의 test input에서는 개수가 5개지만, 실제 값을 제출했을 때 objects의 개수가 몇개 들어올지 모르니 매개변수의 개수로 잡아준다.
if(objects[i].x == objects[i].y){
// 들어오는 objects는 배열이다. 즉, 인덱스를 사용하여 첫번째 오브젝트의 값을 가져올 수 있다.
// 값이 순회하며 x와 y의 값이 같은지 확인할 것이다. (type 은 확인하지 않는다)
cnt=cnt+1;
// 조건이 true라면 cnt 변수에 +1이 된다.
}
return cnt;
// 마지막으로 모든 문을 순회하고 나서 cnt를 리턴하면 x와 y의 값이 같은 오브젝트가 몇개인지 알 수 있다.
}