코딩테스트 문제/프로그래머스 코딩테스트

코딩테스트 LV. 0 / LV 1

pjh8838 2022. 10. 3. 01:51

알고리즘 문제를 풀 때 모르겠다면 해당하는 수학공식이 있는지 찾아보는 것을 추천한다.


몫 구하기

원래 정수인데 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} 의 형태로 변한다.
아마도 배열에서 큰값 작은값 뽑는게 가능해서 바꿔준듯


 

728x90