알고리즘 문제를 풀 때 모르겠다면 해당하는 수학공식이 있는지 찾아보는 것을 추천한다.
몫 구하기
원래 정수인데 parseInt 왜 쓰는지 모르겠음
parseInt = 문자열을 정수로 바꾸는 함수
배열의 평균값
reduce로 배열 numbers 값을 다 더하고 length 만큼 나눠주면 평균
나이 출력
한국 나이니까 + 1
특정 사람 보다 키 큰 사람
filter를 써서 height보다 큰 length를 구함
짝수의 합
for문을 돌려서 짝수를 찾고
모든 짝수를 다 더함 arr = arr + i (arr += i)
나온 값을 다 더할때는 arr = arr + i
짝수와 홀수
삼항연산자
약수의 합
for문 돌려서 약수를 전부 찾아서 answer += i 로 다 더함
자릿수 더하기
toString으로 문자열로 바꿔줌
split(" ") 은 문자열을 구분자로 잘라서 잘라진 조각들을 배열에 저장해서 리턴 = split(",")
split("") 은 위랑 띄워쓰기 차이지만 예를들어 문자열이 abc 라면 a ' ' b ' ' c 로 되어서 length가 5가 된다
split( )은 문자열 전체를 length 1인 배열로 리턴
map 메서드는 주어진 함수를 호출한 결과를 모아서 새로운 배열로 반환한다.
parseInt는 값을 정수로 반환
reduce는 전체 합
자연수 뒤집어 배열로 만들기
reverse는 역순
정수 제곱근 판별
Math.sqrt() 는 괄호안 숫자의 제곱근을 구하는 함수
Math.sqrt(n) % 1 == 0 은 n이 어떤수의 제곱근일 때로 해석했는데 왜 1로 나누는지 정확히 이해 못함
Math.pow(base, exponent) 는 base가 2, exponent가 3이면 2의 3승을 나타낸다.
* n이 어떤수의 제곱이라면 제곱근을 가진 모든 수는 1로 나눴을 떄 나머지가 0이 된다.
중앙값 구하기
sort a - b 는 오름차순으로 정렬
Math.floor는 주어진 수보다 작은 정수 중에서 가장 큰수 리턴
예를 들면, 5.95 = 5, - 5.05 = -6
이 문제는 중앙값이 있을려면 배열 값이 홀수개가 있어야한다.
Math.floor(array.length / 2) 는 풀어서 보면 5 / 2 = 2.5보다 작은 정수 중에서 가장 큰수는 2
배열에서 2번째는 7이기 때문에 중앙값이 나온것 같다.
약수 구하기
문자열 내 p와 y의 개수
대문자와 소문자가 섞여있기 때문에 모두 toUpperCase로 대문자로 만들어줌
split("P")를 써서 P를 구분자로 써서 배열에 리턴
true, false를 어떻게 표현할까 고민했는데 이렇게 적어도 정답으로 처리
하샤드 수(18 이면 1 + 8 = 9, 9로 나누어 떨어져야 하샤드 수)
문자열을 정수로 바꾸기
x만큼 간격이 있는 n개의 숫자
나머지가 1이 되는 수 찾기
콜라츠 추측
인덱스 바꾸기
점 3개는 전개 연산자 = 객체나 배열의 값들을 하나씩 꺼내서 리턴한다.
join은 배열의 모든 요소를 연결해 하나의 문자열로 만듬
예를 들어, 배열 = ['바람', '비', '물']
join() = 바람, 비, 물
join(' ') = 바람비물
join('-') = 바람-비-물
가장 큰 수 찾기
Math.max = 배열에서 최대값 구하기 반대는 Math.min
indexOf는 특정 문자 위치 찾기
양꼬치
양꼬치 n은 12000원, 음료수 k는 2000원
두개를 곱해서 더해주면 되는데 서비스 계산 어려움
Math.floor(n / 10) 이면 n이 2인분이어도 0.2, Math.floor라서 전부 0으로 됌 10인분을 시켰을 때 1
Math.ceil([숫자]); = 올림 324.6 = 325
Math.floor([숫자]); = 내림 324.6 = 324
Math.round([숫자]); = 반올림 324.6 = 325
피자 나눠 먹기
7조각, 사람수는 n
사람수 나누기 7조각 = n / 7
사람이 7명이면 7 / 7 = 6 / 7 = 0 + 1조각
사람 8명이면 8 / 7 = 7 / 7 = 1 + 1 = 2조각
15 / 7 = 14 / 7 = 2 + 1 = 3조각
왜 - 1을 하는지는 이해 안됌
+ 1은 한조각 이상 먹기 위해서 추가하는 것 같음
각도기
세균 증식
** = 거듭제곱 ( 같은 수를 곱하는 것 )
왜 거듭제곱인지 이해 안됌
1시간
n * 2
2시간
n * 4
n * 2 ** t
최댓값 만들기
배열 두배 만들기
배열 자르기
+ 1은 [1, 2, 3, 4, 5]의 배열에서 인덱스 1부터 인덱스 3까지 자른다고 가정하면 2~ 4니까 값은 [2, 3]만 리턴됌
그래서 + 1을 해줘서 [2, 3, 4]가 나오게 만들어 주는 것 같음
문자열 뒤집기
전개 연산자로 문자열을 전개 후 reverse로 뒤집고 join(' ')으로 문자열로 만듬
중복된 숫자 개수
자릿수 더하기
split(" ") 은 문자열을 구분자로 잘라서 잘라진 조각들을 배열에 저장해서 리턴 = split(",")
split("") 은 위랑 띄워쓰기 차이지만 예를들어 문자열이 abc 라면 a ' ' b ' ' c 로 되어서 length가 5가 된다
split( )은 문자열 전체를 length 1인 배열로 리턴
map 메서드는 주어진 함수를 호출한 결과를 모아서 새로운 배열로 반환한다.
짝수는 싫어요
오름차순이기 때문에 sort를 안쓰고 for문으로 0부터 반복문으로 자연스럽게 오름차순 배열이 되도록 했음
주사위의 개수
직육면체 부피 = 가로, 세로, 높이 3개의 곱
정육면체 부피 = 모서리 길이 * 모서리 길이 * 모서리 길이
직육면체 부피 / 정육면체 부피 하면 될줄 알았는데
Math.floor로 가로 / 모서리길이 * 세로 / 모서리길이 * 높이 / 모서리길이로 해야 답이 나옴
편지
배열에만 length를 쓰는줄 알았는데 문자열에도 가능
배열 원소의 길이
어떤 배열에 있는 모든 요소들의 값을 변경해서 만든 새로운 배열을 써야 할 때는 map 함수 사용
제일 작은 수 제거하기
휴대폰 번호 가리기
서울에서 김서방 찾기
${} 안에 변수를 넣어서 사용할 때는 백틱을 써야한다.
최댓값과 최솟값
s = 문자열, split으로 배열로 바꿔주면 {1 2 3 4} 의 형태로 변한다.
아마도 배열에서 큰값 작은값 뽑는게 가능해서 바꿔준듯
'코딩테스트 문제 > 프로그래머스 코딩테스트' 카테고리의 다른 글
오랜만에 코테 문제 풀기 LV.0 (0) | 2024.10.18 |
---|---|
코딩테스트 LV. 2 (0) | 2022.10.12 |