📖 문제 https://www.acmicpc.net/problem/20437 💡 풀이 방식• 슬라이딩 윈도우1. 입력받는 문자열 w의 알파벳 갯수를 센다.int[] alpha = new int[26];for(int i = 0 ; i 2. 입력받은 문자열을 돌면서 해당 문자의 갯수가 k개 이하라면 탐색을 종료한다.if(alpha[w.charAt(i) - 'a'] k개 이상이라면, 뒷 문자와 비교하며 같은 문자의 갯수를 센다.if(w.charAt(i) == w.charAt(j)) cnt++; 그리고 같은 문자가 k개가 되는 순간, 문제에서 요구하는 조건만큼의 문자를 포함하는 길이가 되었으므로min, max 값을 갱신한다. 🔺 코드1234567891011121314151617181920..
📖 문제 https://www.acmicpc.net/problem/12919 💡 풀이 방식• 재귀S에서 T를 만드는 재귀를 수행하는 게 아니고,T에서 문자열을 지우면서 S를 만드는 재귀를 수행하는 것이다.[재귀 함수]- (종료 조건) 첫 번째 문자열과 두 번째 문자열의 길이가 같고, 두 문자열이 같다면, 1을 출력한다. (같지 않다면 0을 출력한다.)- 두 번째 문자열의 마지막 글자가 A인 경우> 마지막 글자를 하나 뺀 값을 재귀함수의 인자로 갖고 가 재귀를 수행한다.- 두 번째 문자열의 맨 앞 글자가 B인 경우 > 맨 앞 글자를 하나 빼고, 뒤집은 값을 인자로 가져가 재귀를 수행한다. 🔺 코드123456789101112131415161718192021222324252627282930313..
📖 문제 https://www.acmicpc.net/problem/3029 💡 풀이 방식• 문자열1. 첫째 줄에 입력받은 현재 시간을 세미콜론(:) 단위로 분리한다.2. 둘째 줄에 입력받은 나트륨 던질 시간을 세미콜론(:) 단위로 분리한다.3. 둘째 줄에서 입력받은 (시간-분-초)를 첫째 줄에서 입력받은 (시간-분-초)로 빼는 연산을 수행한다.4. 연산 후, 정인이가 기다려야 하는 시간을 출력해야 할 때 시간/분/초 중 한 자리 수의 경우, 앞에 0을 붙여 출력하도록 한다. (두 자릿수면 그냥 출력한다.) 💥 유의사항정인이는 적어도 1초를 기다린다고 했으므로,1과 2에서 입력받은 시간이 같은 경우, 24:00:00이 나오도록 처리해 줘야 한다. 🔺 코드123456789101112131..
📖 문제 https://www.acmicpc.net/problem/7490 💡 풀이 방식• 브루트포스 + 백트래킹 + 문자열 [DFS 함수]- 인자: now - 현재 탐색 중인 숫자의 위치 (1부터 시작) / num - 현재 숫자 / sign - 현재 숫자의 부호 (1이면 +, -1이면 -) / sum - 현재까지의 합계 / str - 현재까지의 연산식- 종료 조건: 수열의 맨 마지막 숫자 N에 도달했을 경우- 부호가 [공백이냐/+냐/-냐] 에 따라 재귀함수를 호출한다. 🔺 코드1234567891011121314151617181920212223242526272829303132333435import java.util.*;import java.io.*; public class Main { ..
📖 문제 https://www.acmicpc.net/problem/15886 💡 풀이 방식• 문자열E와 W가 붙어있는 문자열 EW의 갯수를 구하면 된다... 🔺 코드1234567891011121314151617181920212223import java.util.*;import java.io.*; public class Main { static int N, cnt; static char[] map; public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); N = In..
📖 문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 💡 풀이 방식• 브루트포스1. 리스트에 val_ext보다 작은 데이터만 뽑아 저장한다.2. 해당 리스트를 sorty_by에 해당하는 값 기준으로 오름차순 정렬한다.3. 리스트를 2차원 배열로 변환한다. + ext, sort_by 정보의 인덱스 구하는 방법을 동일하므로 메소드로 만들어 사용한다.// 배열에서 데이터의 인덱스 구하는 메소드private static int getIdx(String str) { switch(str) { case "code": return 0; ..
📖 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 풀이 방식 • 문자열 (브루트포스) 1. #이 붙은 부분을 다른 문자로 치환한다. m = m.replace("C#", "c") .replace("D#", "d") .replace("F#", "f") .replace("G#", "g") .replace("A#", "a") .replace("B#", "b"); 2. musicinfos 배열을 돌며 악보와 재생시간을 구한다. 1) #이 붙은 부분을 또 1과 같이 다른 문자로 대체한다. String[] info = music.split(","); int ..
📖 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 풀이 방식 • 스택/큐 필요 자료구조 - Plan 객체 - 잠시 멈춘 과제 저장용 스택(또는 큐) - 완료된 과목 저장용 정답 리스트 1. Plan 객체를 생성해 배열에 넣고, 배열을 시작 시간 순 오름차순으로 정렬한다. 2. 0부터 마지막-1 인덱스까지 Plan 객체 배열을 순회한다. 현재 계획 (pp[i])과 다음 계획(pp[i+1])을 비교한다. 만약 현재 계획의 종료 시간이 다음 계획의 시작 시간 이후인 경우, 과제를 잠시 멈춘다. 현재 계획을 남은 시간으로 저장한다. (남은 시간 = 현재..
📖 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 💡 풀이 방식 • 구현, 문자열 1. 문자열 배열 board를 돌며 O 갯수와 X 갯수를 구한다. 2. 규칙을 위반하는지 검사한다. 1) X 갯수가 O 갯수보다 많을 수 없으므로 규칙 위반 2) O 갯수 > X 갯수 + 1 일 수 없으므로 규칙 위반 3) O로 빙고가 완성되었을 때 O 갯수 = X 갯수면 규칙 위반 (끝났는데 종료되지 않았기 때문) 4) X로 빙고가 완성되었을 때 O 갯수 = X 갯수 + 1이면 규칙 위반 (끝났는데 종료되지 않았기 때문) 🔺 코드 1 2 3 4 5 6 7 8 9 10..