전체 글
인프런 6. 뒤집은 소수 (Java)
Solution 1 (내 풀이) 단순히 문자 뒤집고 정수 변환 후에 소수 판단 메서드로 확인하였다. 소수판단메서드에서는 정수의 제곱근까지만 나뉘어지는지를 시도하여 횟수를 줄일 수 있다. private void solution(int n, String[] s) { StringBuilder sb = new StringBuilder(); for (String x : s) { StringBuilder temp = new StringBuilder(x); String reversed = temp.reverse().toString(); int reversedInt = Integer.parseInt(reversed); if (isPrimeNumber(reversedInt)) sb.append(reversedInt).a..
인프런 5.소수(에라토스테네스 체)_Java
Solution 1 미리 배열을 만들고 인덱스를 값으로 넣어준다. 배수이면 0을 할당하는 방법으로 0이 아니면 소수라고 할 수 있다. private int solution(int n) { // 배열의 인덱스에 맞게 값으로 넣어준다. int[] a = new int[n+1]; for (int i = 2; i
인프런 4. 피보나치 수열(Java)
Solution 1 피보나치 수열을 dp로 푸는 건 자주 나오기 때문에 아무래도 찾아서 다시 적어 봤다. private int[] solution(int n) { StringBuilder sb = new StringBuilder(); int[] arr = new int[n]; arr[0] = 1; arr[1] = 1; for (int i = 2; i < n; i++) { arr[i] = arr[i - 1] + arr[i - 2]; } return arr; } Solution 2 (강사님 풀이) 간단하게 前항과 前前항을 더해서 c를 만들어주고, 前항 변수에 c를 담고 前前항 변수에 b를 담고 반복한다. private void solution(int n) { int a = 1, b =1, c; System...
인프런 3. 가위 바위 보 (Java)
Solution1 (내 풀이) 값의 차이로 A, B, D를 구분한다. private void solution(int n, int[] a, int[] b) { StringBuilder sb = new StringBuilder(); // 두 값의 차이를 이용하여 구함. for (int i = 0; i < n; i++) { int num = a[i] - b[i]; if (num == 1 || num == -2){ sb.append("A\n"); } else if (num == 2 || num == -1) { sb.append("B\n"); } else if (num == 0) { sb.append("D\n"); } } System.out.println(sb); } Solution2 (강사님 풀이) 비기거나 A..
인프런 2. 보이는 학생 (Java)
Solution 앞의 학생보다 키가 커야 보인다고 할 수 있다. 1. 첫 번째 학생은 무조건 보이므로 cnt에 1을 할당하고 일단 배열의 가장 앞에 값을 max에 담아 두고 for문을 돌려서 배열에서 arr보다 큰 값이 나오면 cnt를 증가시키고, max 값을 바꿔준다. public void solution(int[] arr) { int cnt=1; int max = arr[0]; for (int i = 1; i max) { cnt++; max = arr[i]; } } System.out.println(cnt); }
프로그래머스 전화번호 목록 (Python)
풀이 참조: https://youtu.be/4-iyppqNCyg https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 위 유튜브 영상을 보고 정리하였습니다. 개발자로 취직하기 님께 감사드립니다. Solution 1 이중포문을 쓰고 if 문 2개로 서로 접두어인지 확인한다. 테스트케이스 2개가 시간초과가 뜬다. # Loop를 활용한 솔루션 : 시간초과 뜸. def solution_Loop(phone_book): ..
LeetCode 88. Merge Sorted Array (Python)
https://leetcode.com/problems/merge-sorted-array/ Merge Sorted Array - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com Solution 1 시간복잡도 : O(NlongN) 공간복잡도 : O(N) 아이디어 (정렬) 아주 단순하다. nums1 뒤에 넣고 정렬을 한다. 그리고 일반 할당이 아닌 슬라이스 할당을 하였다. 이렇게 하면 참조(주소)에 의한 호출로 동작하므로 값이 바뀐다. # 1. 정렬 def merge(..
LeetCode 35.Search Insert Position (Python)
https://leetcode.com/problems/search-insert-position/ Search Insert Position - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com Solution 1 시간복잡도 : O(N) 공간복잡도 : O(1) 아이디어 (Brute- Force) 배열을 0에서부터 순회하고, target의 값과 같거나 크다면 순회 중단하고 중단한 시점의 인덱스를 반환한다. # 1. Brute force def searchInsert(nu..
LeetCode 26. Remove Duplicates From Sorted Array (Python)
https://leetcode.com/problems/remove-duplicates-from-sorted-array/ Remove Duplicates from Sorted Array - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com Solution 시간복잡도: O(n) 공간복잡도: O(1) 아이디어(Brute-Force) 중복이 없는 상태의 길이를 반환하라는 문제인데, 단순히 중복되지 않는 수의 갯수를 세서 이를 반환하는 식으로 구함. .. 이라고 생각했는데,..
LeetCode 1. Two Sum (Python)
https://leetcode.com/problems/two-sum/ Two Sum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com Solution 1 Brute Force 시간복잡도 : O(n^2) 공간복잡도 : O(1) def twoSum(nums: List[int], target: int) -> List[int]: for i in range(len(nums)): for j in range(i+1, len(nums)): if (nums[i] + nums[j..