본문 바로가기

Til33

항해 99 15일차 TIL ( 뒤에 있는 큰 수 찾기 / 프로그래머스) 문제 [프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr](https://school.programmers.co.kr/learn/courses/30/lessons/154539) o(n2)으로 탐색하면 쉬운 문제이지만 numbers의 길이가 1,000,000이다. 시간초과에서 걸릴 것 같아 좋은 방법을 생각해야 한다. 일단 o(n2)로 코드 구현해보자 1 번째 시도 import java.util.*; class Solution { public int[] solution(int[] numbers) { int n = numbers.length; int[] arr .. 2024. 4. 12.
항해 99 14일차 TIL( 이진 변환 / 프로그래머스 ) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 입력받은 문자열이 1이 될 때까지 while 반복문을 돌린다. 입력받은 문자열에 있는 0을 ""으로 바꿔서 text 변수에 저장한다. 입력받은 문자열의 길이에서 text의 길이를 빼서 0의 개수를 센다. text의 길이를 이진수로 바꿔서 binary 변수에 저장한다. 한 번 반복문이 돌 때마다 count를 1씩 늘려준다. 반복문이 다 돌고 난 후의 count와 zero를 배열에 담아 return 한다. 진수변환 함수 int decimal = 10; String binary = Integer.. 2024. 4. 10.
항해 99 13일차 TIL( 덧칠하기 / 프로그래머스) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 알고리즘 설명 칠해야 하는 벽에 위치를 unpainting[] 배열에 저장. 1m씩 전진하며 페인팅 해야하는지 확인 true라면 페인팅 하고 롤러크기 만큼 다음 인덱스들 false 해주기 import java.util.*; class Solution { public int solution(int n, int m, int[] section) { int result =0; boolean[] unpainting = new boolean[n]; for(int s : section) { unpain.. 2024. 4. 9.
항해 99일차 12일차 TIL(문자열 내 마음대로 정렬하기/ 프로그래머스) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 위 문제는 문자열을 정렬할 수 있냐는 묻는 직관적인 문제다. 다만 아주 조금 어려운점이 있다면 String 내에 특정 문자까지들끼리도 비교해야 한다는 것이다. Arrays.sort()는 시간복잡도가 O(nlogn)이다. 절반을 다시 나누는 과정이 로그 시간(logn)에 해당하며, 각 단계에서 모든 원소에 대해 정렬을 수행하는 데 선형 시간(n)이 소요되므로, 전체 시간 복잡도는 O(nlogn)이 됩니다. import java.util.*; class Solution { public Stri.. 2024. 4. 8.
항해99 11일차 TIL(피로도 / 프로그래머스) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 문제를 보자마자 완전탐색이 들어 코드를 짜봤습니다. import java.util.*; class Solution { int answer =0; boolean[] visited; public int solution(int k, int[][] dungeons) { visited = new boolean[dungeons.length]; dfs(0, k, dungeons); return answer; } public void dfs(int depth, int k, int[][] dungeons).. 2024. 4. 6.
항해 99 10일차 TIL( 행렬의 곰셈 / 프로그래머스 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 보기엔 굉장히 쉬어보이지만 구현하는데 애 많이먹었다 행렬부터 다시 짚어보겠다 arr1배열의 행과 arr2의 열을 곱하는 거다 그러므로 arr1행의 길이와 arr2의 열의 길이는 같아야 한다 i = 현재 행을 가르키는 인덱스 j = 현재 열을 가르키는 인덱스 k = 내적 계산에서 사용되는 인덱스로, 행렬 A의 열과 행렬 B의 행을 동시에 순회합니다. class Solution { public int[][] solution(int[][] arr1, int[][] arr2) { int[][] a.. 2024. 4. 5.
항해99 TIL 9일차(기사단원의 무기 / 프로그래머스) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 약수를 구하는 간단한 문제입니다. 그러나 개선된 약수를 구하는 식을 알아야 합니다. 16의 약수를 구하려면 1~16까지 순회하면 16%i ==0 인지 확인해야 한다. 숫자 하나의 약수를 구하는 것일 때는 상관없다. 여러 숫자를 구할 때는 시간복잡도가 O(n2)이다. 그래서 개선된 약수 구하는 방식이 있다. 1 ~ 16까지 순회하는 것이 아니라 16의 제곱근까지만 살펴보아도 된다는 것이다. 1 x 16 2 x 8 4 x 4 2024. 4. 3.
항해99 TIL 8일차 (피보나치 수 / 프로그래머스) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 간단한 피보나치 문제입니다. 코딩을 처음 배울 때 피보나치 프로그램을 배워 어렵지 않게 재귀함수로 구현했습니다. import java.util.*; class Solution { public int solution(int n) { return (int)(fibonachi(n) % 1234567); } public long fibonachi(int n) { if( n == 0) return 0; else if(n == 1) return 1; else return fibonachi(n-1) +.. 2024. 4. 2.
항해99 TIL 7일차 (크기가 작은 부분 문자열 / 프로그래머스) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 보자마자 윈도우 알고리즘이 떠올랐습니다. n의 길이만큼의 새로운 윈도우 배열을 만들어줍니다. 원도우를 t에 비추어 보며 옆으로 한칸씩 밀어보면 됩니다. 예제 1번을 예시로 들어보겠습니다 t = "314592", n = "271" 윈도우 배열 1 번째 314 윈도우 배열 2 번째 145 윈도우 배열 3 번째 459 . . . 이런 식입니다. 아이디어는 나왔으니 자료구조에 대해 고민해볼 차례입니다. 숫자를 비교해야 하는데 String으로 준 이유가 있을겁니다. 제 생각에는 비교를 용이하기 위해.. 2024. 4. 1.