본문 바로가기

알고리즘98

항해 99 18일차 TIL( 대충 만든 자판 / 프로그래머스 ) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 자료구조는 HashMap을 사용한다. HashMap에 알파벳마다 눌러야 하는 최소 횟수를 저장한다. Keymap의 알파벳을 탐색하며 알파벳마다 눌러야 하는 최소 횟수를 업데이트 해간다. import java.util.*; class Solution { public int[] solution(String[] keymap, String[] targets) { int n = keymap.length; HashMap map = new HashMap(); for (int i = 0; i < n; i.. 2024. 4. 15.
2개 이하로 다른 비트 / 자바 / 프로그래머스 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 완전탐색을 시도하려다가 numbers의 길이를 보고 시간초과를 직감하여 완전탐색은 포기하였습니다. 이런경우 규칙을 찾는 것이 중요합니다. 완전탐색으로 시간초과가 나는 경우 출제자들이 무조건 규칙을 만들어놓습니다. 제가 찾은 규칙은 이렇습니다. 1. 가장 끝에서 0인 숫자를 1로 바꾼다. 뒤에 숫자를 0으로 바꾼다. 2. 0이 binary 맨 뒤에 있는 경우 0 -> 1만 해준다. 3. 0이 존재하지 않는 경우 1을 추가하고 기존 맨 앞 숫자를 1 -> 0으로 바꿔준다. import java.. 2024. 4. 14.
항해 99 17일차 TIL ( JadenCase 문자열 만들기 / 프로그래머스) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 번째 시도 String 함수, 이 두개를 알아야 풀 수 있는 문제입니다. toUpperCase() toLowerCase(); class Solution { public String solution(String s) { String answer = ""; String[] words = s.toLowerCase().split(""); boolean flag = true; for (String word : words) { answer += flag ? word.toUpperCase() : word; fla.. 2024. 4. 14.
항해 99 16일차 TIL( 광물캐기 / 프로그래머스) 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 사고과정 문제를 요약하자면 최소한의 피로도로 최대한 광물을 캐는 것이다. 광물 캐는 규칙을 세워보겠다. 돌은 어느 곡갱이로 캐든 피로도가 1로 똑같다. 그러므로 가장 성능이 안 좋은 곡갱이를 우선순위로 사용해야 한다. 돌을 캘 때는 다이아몬드 < 철 < 돌 곡갱이로 우선순위를 돌 것 다이아 몬드를 캘 때는 돌 < 철 < 다이아몬드 철을 캘 때는 돌 < 다이아몬드 < 철 하나의 곡갱이를 선택하면 무조건 연속으로 5개 캐야한다. 1번째 시도 끝나는 상황이 두 개로 나누어진다 1. 곡갱이가 부족한 상황 2. .. 2024. 4. 13.
항해 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 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 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.