본문 바로가기

99클럽31

항해 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 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.
항해99 TIL 6일차 (삼각 달팽이 / 프로그래머스) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 두 가지 생각이 떠올랐다. 1. 배열 자리 순서대로 숫자의 규칙을 찾아보자 2. 숫자가 증가하는 순서대로 자료구조에 집어넣자 처음엔 규칙을 발견하는 것이 알고리즘 짜기 쉽기 때문에 1번 방법을 선택했다. n = 7 과 n =8을 만들어보면서 규칙을 찾아봤는데 쉽지 않아. 결국 2번을 택했다. 로직을 설명 하자면 숫자가 증가하는 것과 마찬가지로 큰 데두리 삼각형에 숫자를 집어넣고 작은 테두리 삼각형에 숫자를 집어넣는 방식이다. ↙ ↙ ↖ ↙ ↙ ↖ 꼭대기에서 부터 시작하여 요런 방식으로 숫자.. 2024. 3. 31.
항해99 TIL 5일차 (숫자 문자열과 영단어 / 프로그래머스) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 문자로 나왔을 때 1 번째 글자와 2 번째 글자만 보면 된다. ze가 나오면 0, on가 나오면 1 ..... for문을 돌면서 i, i+1을 확인한다. 숫자라면 i++를 해주고 문자로 표현된 숫자라면 i += 문자열 길이를 해주면 된다(지금 문자가 무엇인지 확인했으므로 바로 다음 문자 확인) import java.util.*; class Solution { public int solution(String s) { StringBuffer sb = new StringBuffer(); for(.. 2024. 3. 30.