반복문을 활용한 코딩 테스트 연습입니다.
if, 혹은 삼항 연산자를 사용해 조건을 주는 문제입니다.
크게 1. 숫자를 문자로 바꾼 뒤 다시 숫자로 바꾸어 더해주기 2. 반복문을 이용하여 숫자를 더해주기라는 두가지 방법이 있습니다.
if문과 Math.sqrt(), Number.isInteger()을 사용해 제곱근인지 아닌지 판별해 주었다.
Number.Integer()을 사용해서 약수를 판별하는 방법을 이용하였다. 숫자로 나누기를 했을 때 나머지가 0이라는 방법으로도 약수를 판별해 줄 수 있다.
숫자 그대로 이용해서 반복문을 이용하는 방법이 있고, 문자로 바꾼 다음 뒤집어 준 뒤 다시 숫자로 바꿔 주는 방법 두 가지가 있다.
반복문 또는 reduce함수를 이용하여 평균을 쉽게 구할 수 있습니다.
크게 숫자 그대로 배열을 만들어 주는 방법1, 문자로 바꾸어 배열을 만들어서 정렬해주는 방법2가 있습니다.
p와 y를 찾기 위해서 반복문을 사용해 줄 수도 있고, match(), split(), reduce()함수를 사용해 줄 수도 있습니다.
for문을 이용해서 배열에 .push로 값을 추가해 주거나 배열을 생성해 map()으로 배열을 바꾸어 줄 수도 있다.
문자로 자릿수를 더해 푸는 방법/ 숫자로 자릿수를 더해 푸는 방법 2가지가 있습니다.
자바스크립트에서 문자열인 숫자를 사칙연산해 주면 자동으로 숫자로 형변환 된다.
indexOf 메소드를 사용하면 쉽게 값에 맞는 키값을 찾아줄 수 있습니다.
반복문을 사용하여 숫자를 검색해 주고, 반복을 할 때마다 변수에 1을 더해 반복한 횟수를 세어주는 문제이다.
연속적인 수의 합은 (a + b) * 갯수 / 2 로 구할 수 있다.
정규표현식을 이용해 형식에 맞는 문자를 찾아준 다음, replace를 이용해 바꿔줄 수 있습니다.
spread operator(전개 연산자)를 사용하여 최소값을 구한 다음, filter 함수로 최소값을 제외시켜 줬습니다.
filter()를 이용하여 나누어 떨어지는 숫자 배열을 구해 주었다. filter() 이외에도 map(), 반복문, forEach를 이용해서도 구해줄 수 있다. 이후에 정렬을 하기 위해서 sort()함수를 사용해 줬다. 쇼트 서킷에 대해서도 잠깐 알아봤다.
반복문 or reduce() or forEach()와 if를 중첩하여 조건에 따라 더하기나 빼기를 해 줄 수 있습니다.
repeat()함수를 이용하거나, 반복문을 사용하여 똑같은 패턴이 반복되는 문자열을 만들어 줄 수 있다.
전체 합에서 reduce로 배열의 값을 모두 더해서 빼주던지, Include()로 배열의 값을 판별해주면 됩니다.
중간값을 구하는 방식에는 Math.floor(),math.ceil() 등이 있습니다. 중간값을 구한 후 문자열을 잘라 주는데 slice(), substr(), substring(), 혹은 인덱스 자체를 이용해줄 수도 있습니다. substr()은 권장되는 방식은 아닙니다
reduce() 혹은 반복문을 이용하여 내적을 구해줄 수 있습니다.
split('')으로 문자열을 나눠준 다음 sort()로 배열을 정렬해주는데, sort 자체에서 정렬해줄 수도 있고 reverse()로 뒤집어 줄 수도 있다. 마지막에 join('')으로 문자를 다시 합쳐 준다.
정규식을 사용하여 문자가 형식에 맞는지를 검사해 줄 수 있습니다.
가우스 덧셈 공식을 활용하여 부족한 금액을 구해줄 수 있다.
숫자가 제곱수이면 약수의 개수가 홀수이고, 아니라면 약수의 개수가 짝수인 점을 이용하여 Math.sqrt()를 이용해줄 수도 있고, for문을 중첩하거나 안쪽 for을 함수로 만들어 줄 수도 있다. for 반복문의 초기문은 항상 let = i 로 선언해 줘야 한다.
replace()와 정규식을 이용하여 문자를 검사해줄 수도 있고, split, map(), join() 등을 이용해 문자를 검사해줄 수도 있다.
repeat() 함수를 사용해서 *을 반복해 줬습니다. 여태까지 문제들은 return으로 돌려 줬지만 이 방식은 console.log()을 이용해 줘야 값을 돌려 줄 수가 있었습니다. 자바스크립트 표준입력에 대한 것은 node.js를 배워야 이해가 될 듯 합니다.
문자로 풀거나, 숫자로 푸는 두 가지 방법이 있다. 문자로 푼다면 pareInt()와 toString()을 이용하여 진수 변환을 해 줄 수 있고, 숫자를 이용한다면 Math.floor()과 Math.pow()를 이용해줄 수 있다.
sort()를 두 번 사용할 수도, 한 번만 사용할 수도 있습니다. 공통적으로 sort() 안에 정렬 기준을 써줘야 하며, 정렬 기준을 쓰는 방법은 삼항연산자 중첩해서 사용하기, localecompare() 함수 사용하기, (a>b)-(a<b) 를 이용하기가 있습니다.
2차원 배열은 배열[i][j]으로 값에 접근할 수도 있고, map()을 사용해서 접근해줄 수도 있다. map()으로 값을 얻으면 함수 자체가 전체 값을 한번씩 인출하므로 반복문을 써 줄 필요가 없다. 가독성을 위해서 구조분해 할당을 써줄 수도 있다.
최대공약수를 구하기 위해 나는 반복문을 이용했지만, 유클리드 호제법을 이용해줄 수도 있다. 최소공배수는 두 값을 곱하고 최대공약수로 나누어 주면 값이 나온다.
연속되는 숫자를 구분하기 위해서 filter()함수를 사용해 주었습니다.
set()을 이용하여 중복을 제거할 수 있습니다. set()에 값을 추가하려면 add()함수를 사용해 줘야 합니다.
date()함수, 혹은 월과 일의 합계로 요일을 구해줄 수 있다.
다중배열에 접근하려면 arr[i][j]로 접근해줄 수 있다. 다중배열에 접근한 후, 합을 반복문으로 구하거나 map을 이용해서 배열을 바꿔줄 수 있다.
반복문, reduce(), filter()등을 사용하여 조건에 맞는 갯수를 세 줄 수 있다.
아스키코드를 이용하여 숫자로 조건을 주는 방법이 있고, 알파벳 배열을 직접 선언하여 조건을 주는 방법이 있습니다.
비트연산자 OR(|)을 사용하면 손쉽게 풀 수 있다. 비트연산자는 이진법으로 바꾼 후 각 비트를 비교해 한쪽이라도 1이면 그 자리에 1을 반환한다. 나는 값을 이진법으로 바꾼 뒤, 더해서 0이면 공백, 1이나 2이면 #을 반환해 주었다.
명함의 짧은 쪽은 짧은 쪽끼리, 긴쪽은 긴쪽끼리 모은 뒤 비교합니다. 각각의 최대값을 구한 뒤 곱해주면 지갑의 최소값이 나온다.
replace()를 이용하여 문자열을 지정한 숫자로 바꿀 수도 있고, split()과 join()을 사용해서 바꿔줄 수도 있습니다.
폰켓몬을 골라갈 수 있는 수와, 폰켓몬 종류의 수를 비교하여 큰 쪽을 리턴해 갑니다. 종류의 수를 구하는데는 set()을 사용해 줍니다.
1부터 하나하나 검사해서 소수를 찾아 주는 방법도 있지만 숫자가 커질수록 효율성이 떨어진다. 따라서 에라토스테네스의 체를 사용하면 효율성이 개선될 수 있다.
반복되는 패턴과 다른 배열을 비교할 때는, 반복되는 배열 자체를 반복해서 검사해줄 수도 있지만, 나머지를 이용하면 쉽게 비교할 수 있습니다.
filter()으로 단계별로 실패한 사람 수와 다음 단계에 남아 있는 사람을 구할 수 있습니다. 배열에 넣어줄 때 스테이지 번호를 함께 이차원배열로 넣어준 뒤 실패율을 기준으로 sort()로 정렬하고, map()으로 단계의 배열을 리턴해주면 됩니다.
당첨된 갯수를 반복문, filter(), includes()를 사용해서 세 줄 수 있습니다. 0의 갯수를 세는 것은 filter()와 !숫자를 이용하면 쉽게 셀 수 있습니다. 마지막 갯수와 순위를 대응하는 것은 배열을 만든 뒤 배열의 인덱스로 대응해 줄 수 있습니다.
ID를 형식에 맞게 변환할 떄, 기본적으로 정규식을 이용해서 변환해 준다고 생각하면 제일 편리한 방법입니다. replace()를 기본적으로 사용하고, 때에 따라서 slice(), charAt(), repeat(), padEnd(), 반복문을 사용해 줄 수 있습니다.
성격유형을 각각 비교한 다음, 값 자체를 비교할 수 있도록 [-3,-2,-1,0,1,2,3]으로 바꾼 다음 더해서 비교하는 방법이 있고, 변환하지 않고 값 자체를 각각 객체에 담아 비교하는 방법이 있습니다. 이 방법에서는 구조분해할당을 사용하면 더욱 간결해질수 있습니다
조합의 개수를 모두 구한 뒤, 소수의 개수를 구하는 문제이다. 합이 같아도 조합의 형태가 다르기 때문에 따로 개수를 세 주어야 한다. 소수를 판별하는 함수를 하나 더 만들어서 함수 안에서 불러 주면 된다.
첫째로 여벌이 있었는데 도난당해서 자기 자신에게 빌려줘야 하는 경우를 걸러줍니다. 이 과정에서 includes(), filter() 사용 가능합니다. 배열의 순서도 중요하기 때문에 sort()로 정렬해주고, 반복문으로 검사하여 해당하는 값을 splice() 해줍니다.
sort()를 이용하여 값을 하나씩 검사해줄 수도 있고, 해시를 사용해줄 수도 있습니다. Map(),set(),get(), 단축평가(||)를 사용해서 값을 찾아줍니다. 해시를 사용하면 시간복잡도가 줄어든다는 장점이 있습니다.
map(), set(), get()과 해시 개념을 사용하여 빠르게 key에 맞는 value를 찾아줄 수 있습니다.
정규식과 match()를 활용하여 각 숫자, 문자, 기호를 분리한 다음 각 값을 변환한 다음 계산해 주었습니다.
2차원 배열을 사용하여 키패드의 위치를 저장하고, 길이를 비교하여 손가락을 정해 주었습니다.
이차원 배열을 for 반복문을 사용하여 탐색해 주었습니다.
map()과 set(),get()을 이용해서 각 숫자의 갯수를 센 다음 비교해 줍니다. 값이 모두 0인 경우는 숫자로 형변환을 한 다음 비교하면 간편하게 비교할 수 있습니다. splice()나 push()를 사용하면 값이 큰 경우 시간이 많이 걸릴 수 있습니다.
간단하게 for문을 중첩할 수도 있지만, 조합에서 선택해야 할 갯수가 많아지면 가독성이 떨어집니다. 따라서 재귀함수를 이용하여 조합을 구하는 방법도 알아두면 좋습니다.
해시 테이블을 사용하면 가장 손쉽게 풀 수 있습니다.