목록분류 전체보기 (245)
개발 공부~
https://www.acmicpc.net/problem/1475 숫자가 0부터 9까지 정해짐 -> 숫자를 인덱스로 가지고 해당 숫자의 빈도를 저장다만 6,9는 호환 가능하기 때문에 따로 계산두 숫자의 빈도 수를 합하고 이를 세트로 몇개가 필요한지 구한후6과9를 제외했을때의 세트 개수 중 큰 값을 정답으로 한다package bj;import java.util.*;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] nums = new int[10]; String input = sc.nextLine(); for(int i..

https://www.acmicpc.net/problem/1406 -> 즉 양방향으로 커서를 움직여야함 -> listIterator listIterator 리스트 위에서 양방향(앞/뒤)으로 이동하면서 현재 위치에서 삽입·삭제 가능 list.listIterator(list.size()): 초기엔 커서가 문자열의 맨 끝이라는 문제 조건 L명령커서를 왼쪽으로 한 칸 이동하려면 왼쪽에 원소가 있는지 확인-> hasPrevious() 참이면 있는것-> 있으면 previous()를 호출해서 커서를 한 칸 왼쪽으로 옮기고 그 위치의 문자를 반환 D명령커서를 오른쪽으로 한 칸 이동하려면 오른쪽에 원소가 있는지 확인-> hasNext() 참이면 있는 것->있으면 next()를 호출해서 커서를 한 칸 오른쪽으로 옮기고 ..
https://www.acmicpc.net/problem/1158 순서대로 k번째 사람 제거제거되면 남은 사람들로 이루어진 원을 따라 계속함원에서 제거되는 순서를 출력-> 제거하고 뒤에 있던 모든 원소를 앞으로 당겨야함-> 삭제할 때마다 리스트 크기가 1씩 줄어드는데 알아서 연속된 인덱스로 재배치해줌=> LinkedList 사용 import java.util.ArrayList;import java.util.List;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); ..
https://www.acmicpc.net/problem/16472최대 N개의 종류의 알파벳을 가진 연속된 문자열만 인식 문자열이 주어졌을 때 이 번역기가 인식할 수 있는 최대 문자열의 길이 구하기 단, 문자열에는 알파벳 소문자만이 포함 번역기가 인식할 수 있는 문자열의 최대길이를 출력 getCount(int[] alp) 현재 창(window)에 포함된 서로 다른 알파벳의 개수를 반환alp 배열: 각 알파벳 등장 빈도 -> 크기 26 투포인터 : 현재까지 포함된 알파벳 종류는 n개 이하 -> 다음 알파벳 검사 (next) next가 문자열 범위에 있을 때,다음 알파벳을 추가하여 종류 개수 검사n보다 크면 next가지말고 -> 한칸 뒤로, 추가했던 빈도 되돌리기 -> 더이상 증가 불가=> i 증가 -..
https://www.acmicpc.net/problem/15831 문자열에서 연속된 부분 문자열B의 최대 개수가 bMax 이하W의 최소 개수가 wMin 이상가장 긴 부분 문자열의 길이=> 가장 긴 부분을 찾는 것 => 최대 개수을 넘어가면 더이상 추가 불가능 -> i증가=> 최대 개수안에서 w의 최소 개수를 만족시키는 구간의 길이 구하기 => next : 현재의 다음 인덱스를 가리킴 (오른쪽 포인터)=> 두 포인터 사이의 구간 : next는 포함안됨 -> next-i 두개의 조건중 최대 개수를 넘지 않을 동안 계속 추가추가한 구간이 w의 최소 조건을 만족시키는지 검사만족하면 최댓값으로 갱신현재 i에서 시작하는 구간은 다 해봄 -> i증가 => 해당 개수 줄이기 import java.util.Scan..
https://www.acmicpc.net/problem/17609 회문 : 처음부터 시작, 끝부터 시작하는 포인터 2개를 두고 하나씩 증가, 감소시키며 현재 가리키는 문자가 일치하면 회문유사회문: 회문이다가 처음으로 다른 지점을 만났을때 그 지점의 두 포인터중 하나를 각각 뺀 문자열이 회문이면 유사회문=> 문자 하나를 제거하여 회문으로 만들 수 있어야함=> 회문인지 검사하다 처음 다른 지점이 나왔을때, 2개의 문자열이 회문인지 검사 -> 회문이면 유사회문 isPaindrome 함수문자열이 회문인지 확인l과 r을 이용해 문자열의 양 끝에서부터 하나씩 비교 import java.util.Scanner;public class Main { //주어진 문자열이 회문인지 확인하는 함수 public static ..
https://www.acmicpc.net/problem/11728 Arrays.sort바로 정렬대신, 입력과 출력의 시간초과를 방지하기 위해 BufferedReader와 BufferedWriter를 사용함import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.util.Arrays;import java.util.Scanner;import java.util.StringTokenizer;public class Main { public static void main(..
https://www.acmicpc.net/problem/12891 지난 풀이https://better21.tistory.com/61 [백준 - 12891] DNA 비밀번호 .javahttps://www.acmicpc.net/problem/12891문제평소에 문자열을 가지고 노는 것을 좋아하는 민호는 DNA 문자열을 알게 되었다. DNA 문자열은 모든 문자열에 등장하는 문자가 {‘A’, ‘C’, ‘G’, ‘T’} 인 문자better21.tistory.com 지난 풀이보다 투포인터를 조금 더 많이 푼 지금, 다시 풀어본 문제이다 change 메소드: DNA 문자열에서 각 문자를 0,1,2,3으로 변환isPossible 메소드: 현재 구한 문자열이 각 문자 최소 개수를 만족하는지 확ㅇ니처음 입력받은 문..