공부/알고리즘&자료구조 35

항해99 문제22번풀이 (자릿수 더하기,프로그래머스)

https://programmers.co.kr/learn/courses/30/lessons/12931 코딩테스트 연습 - 자릿수 더하기 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다. 제한사항 N의 범위 : 100,000,000 이하의 자연수 입출 programmers.co.kr 내가 푼방식: 접근 입력한 숫자의 각 자리수마다 더해야 하기때문에 split 을 이용하여 분리해야겠다고 생각이 들었고 분리 하기위해서는 number 형에서 string 타입으로 바꿔줘야하기때문에 toString을 쓰기로 생각했다. split을 사용하여 나눌때는 ''으로 한개의 문자열로 쪼..

항해99 문제20번풀이 (완주하지 못한 선수,프로그래머스)

1차 실패 일단 원하는 구현은 했지만 효율성에서 실패가 떴다. 효율성 테스트가 실패 한 원인은 시간 초과 라고 뜨는데, 검색해보고 찾아보고 했을때 내린 결론은 1. 메서드를 많이 쓰면 구동시간이 오래걸린다는점. 2. 시간복잡도와 공간복잡도가 있는데 이때 2중 for문 (처음 for문과 includes 로 확인하므로 2중)으로 Big O 에서 n^2 에 해당하기 때문에 Quadratic Time 에 해당하게 된다고 생각한다. 3. 따라서 queue, stack, tree, 시간 복잡도, 공간 복잡도 등등 개념을 잡고 다시 코딩 해야한다. 아래는 팀원 분의 코딩으로 실현되는 것중 하나이다 https://jann2codingdiary.tistory.com/14 항해99 2주차 알고리즘풀이 5 완주하지 못한 선..

항해99 문제18번풀이 (서울에서 김서방 찾기,프로그래머스)

https://programmers.co.kr/learn/courses/30/lessons/12919 코딩테스트 연습 - 서울에서 김서방 찾기 String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니 programmers.co.kr 내가 푼 방법: 접근법 Kim 이라는 문자열을 찾는 것을 봤을때 바로 정규표현식을 생각했고 K 는 대문자 이기때문에 대소문자를 구분하는 걸 넣어야겠다고 생각. match 메서드를 써서 동일한 값이 있는지 알아보면 된다고 생각했다. 그리고 일정한 텍스트에 n번째에 김서방이 있다 를 출력한다..

항해99 문제19번풀이 (수박수박수박수박수박수?,프로그래머스)

https://programmers.co.kr/learn/courses/30/lessons/12922 코딩테스트 연습 - 수박수박수박수박수박수? 길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다. 제한 programmers.co.kr 내가 푼식: 접근법 먼저 배열의 속성이 무엇일까 생각했다. 수박 이라는 단어를 각각 하나로 쪼개서 더해야할지, 수박을 한단어로 만들고 마지막뒤를 더하거나 빼는걸 생각하고 접근했다. 처음엔 for문을 통해 수박 이라는 단어를 반복하되 2로 나누고 남은 값이 0이 아니면 홀수이므로 그땐 따로 '수'라는 단어를 합칠려고 생각했지만..

항해99 문제29번풀이 (3진법 뒤집기,프로그래머스)

https://programmers.co.kr/learn/courses/30/lessons/68935 코딩테스트 연습 - 3진법 뒤집기 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수 programmers.co.kr 내가 푼 방법: 접근법 먼저 js에서 어떤 메서드가 10진수의 값을 3진수로 바꿀수있는지 , 문자열 위치를 바꿀수있는법, 그 string 값을 다시 10진수 정수로 바꾸는 메서드들을 찾아보았다. 그결과 toString(),split(),reverse(), parseInt()가 필요하였고, 각각의 메서드의 기능과 파라..

항해99 문제15번풀이 (내적,프로그래머스)

https://programmers.co.kr/learn/courses/30/lessons/70128 코딩테스트 연습 - 내적 길이가 같은 두 1차원 정수 배열 a, b가 매개변수로 주어집니다. a와 b의 내적을 return 하도록 solution 함수를 완성해주세요. 이때, a와 b의 내적은 a[0]*b[0] + a[1]*b[1] + ... + a[n-1]*b[n-1] 입니다. (n은 a, b의 programmers.co.kr 내가 푼 풀이: 코드 풀이: 2줄. 내적한 각각의 값들을 담을 배열 선언,초기화 3줄. 내적하여 다 더한 값을 담을 변수 4줄~5줄. a 배열만큼의 for문을 돌려 a와 b 배열의 각각의 인덱스에 포함한 값을 곱하여 result배열에 넣고, 그 값을 result2와 더하여 총합을..

항해99 문제14번풀이 (나누어 떨어지는 숫자배열,프로그래머스)

https://programmers.co.kr/learn/courses/30/lessons/12910 코딩테스트 연습 - 나누어 떨어지는 숫자 배열 array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하 programmers.co.kr 내가 푼 방식: +3 코드 풀이: 3줄. 결과값을 가진 배열 result 선언 및 초기화 4줄~8줄. 입력한 arr배열의 길이만큼 for문을 돌려서 배열 각 인덱스에 있는 값들이 입력한 divisor 로 나누웠을때 0이면 실행되게 조건 문 만들고 나눠지는 값은 result 배열에 push 이용하..

항해99 문제11번풀이 (x만큼 간격이 있는,프로그래머스)

https://programmers.co.kr/learn/courses/30/lessons/12954 코딩테스트 연습 - x만큼 간격이 있는 n개의 숫자 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. programmers.co.kr 내가 푼식: 배열로+= 연산할때 string 타입으로 바뀌기 때문에 map과 parseInt사용 하여 다시 Number타입으로 바꾸어줌. 2.일반적인 방법으로 풀었던 식 push 를 이용하여 sum 배열에 for문동안 넣어줌. 이때는 타입이 바뀌지 않는다.

항해99 문제25번풀이 (정수 제곱근 판별,프로그래머스)

https://programmers.co.kr/learn/courses/30/lessons/12934 코딩테스트 연습 - 정수 제곱근 판별 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다. n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함 programmers.co.kr 1. 내가 푼 방법 코드 풀이: 1줄. solution 함수에 number 를 인자로 받음 3줄. Math.sqrt를 사용하여 숫자에대해 루트값을 계산한다. 4줄. Number.isInteger()를 사용하여 sqrt값이 정수면 true, 정수가 아닌 소수점을 갖는다면 false 를 integer 변수에 저장 5줄. if조건문사용하..

항해99 문제21번풀이 (이상한 문자 만들기,프로그래머스)

https://programmers.co.kr/learn/courses/30/lessons/12930 코딩테스트 연습 - 이상한 문자 만들기 문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 programmers.co.kr 내 코드: 코드 풀이: 1줄. 파라미터 a 인자로 받음 4줄. 입력받은 a 문자열을 띄어쓰기 ' ' 로 나누어줌 5줄. 앞으로 대문자 소문자로 바뀐 값을 넣어줄 변수 c 선언 및 초기화 6줄. 나누어진 문자열의 인덱스 만큼 for문을 돌려 주고 7줄. 나누어진 한단어 문자열의 인덱스[i]에서 각각 한글자에 해당하는 [j]번째 인덱스를 가리키는 for..