7/16 13~15번 문제 풀이

강인호·2022년 7월 19일
0

알고리즘 문제풀이

목록 보기
5/39

13번 문제

처음 본 진법 문제였는데 일단 3진법으로 바꾸는걸 검색해봤더니

n진법으로 바꿔주는 toString(n) 함수를 쓰면 된다길래 받은 값을 3진법으로 바꿔준후

바꿔준 값을 7번문제에서 나온 숫자를 문자열로 변환->split으로 쪼개기->reverse뒤집기 후

나온 값을 빈 문자열에다가 join('')으로 합쳐주었다. 합쳐준후 다시 10진법으로 바꿔야 하는데 parseInt (a,b)라는 함수를 사용하면 a라는 문자열을 b진법으로 읽어준다고 나와서

parseInt(a,3)의 형식으로 리턴하게끔 적었다.

최종코드는

14번 문제

처음에 문제를 이해하는데 약간 걸렸는데 결국에 회전이 가능한 직사각형 이라는 조건이 있어서 가로 세로자체가 중요하다기 보다는 각 명함마다 긴쪽의 길이중에 제일 큰 사이즈와 작은쪽의 길이중에 제일 큰 사이즈를 구하면 된다고 생각해서 for문과 Math.max Math.min 함수로 긴쪽의 집합, 작은쪽의 집합 두개를 구한뒤 두 집합중에서 각 각 제일 큰 값을 구해서 서로 곱하게끔 짰다.

최종코드는

for문으로 각 명함을 돌면서 큰쪽의 집합을 max배열에 모으고 작은쪽의 집합을 min에 모아서 서로 곱한값을 answer에 주었다.

15번 문제

중복되는 값을 제거하고 배열의 순서는 그대로 남긴채 새로운 배열을 리턴해야 하는 문제인데 어떻게 접근할까 고민하다가 중복되다가 넘어가는 순간에 해당 숫자를 넘기면 어떨까 하고 생각을 해보았고

for문으로 arr[i]와arr[i+1]이 같지않을때 arr[i]를 추가하는 식으로 짜보았다.

최종 코드는

업로드중..

0개의 댓글