목록2025/04 (12)
개발 공부~
https://www.acmicpc.net/problem/3085 문제 조건주어진 입력에서 사탕 색이 다른 인접한 두 칸을 한번만 구하는게 포인트교환후 행, 열 두 가지의 기준으로 같은 색의 개수가 최댓값사탕의 색이 다른 인접한 두 칸은 항상 존재함 (입력조건) 모든 사탕을 방문하여 행과 열이 각각 하나씩 증가된 두 가지의 경우만 생각(중복 없애기 위함)각 경우마다 서로 인접한 사탕끼리 교환교환 후 행, 열을 기준으로 연속된 부분의 길이 만큼 최댓값을 갱신열,행을 비교하는 함수에서는 마지막으로 연속된 부분도 계산해야함최댓값을 갱신하고 난 뒤 교환은 1번이기 때문에 다시 재교환하여 원래대로 한다 이 문제처럼 인접한 좌표의 순서는 중요하지 않기 때문에 현재 원소에서의 4가지 방향이 아닌 증가하는 2가지..
https://www.acmicpc.net/problem/11068 1. 2부터 64진법까지 돌면서 진법으로 계산한 결과의 int 배열을 리턴값으로 가지는 함수 생성2. 각 결과의 배열 크기는 자릿수만큼으로 계산함! -> 이부분 중요 값을 구해야 회문구할때 편함3. 진법 결과가 회문인지 검사하는 함수 생성 -> 배열 크기의 반까지 돌며 각자리가 같은지 검사하나의 진법이 참이면 참을 반환 회문은 배열의 길이가 중요하다 빈자리는 비교하면 안됨 -> 따로 코드구현없이 처음 배열을 생성할때 초기화를 잘하면 된다 import java.util.Scanner;public class test1 { //진법 변환 static int[] convert(int x, int b){ int len =..
https://www.acmicpc.net/problem/11005 진법 -> n을 b로 나눈 나머지가 자릿수 => 10이상이면 변환하여 저장n을 b로 나눈 몫으로 이어서 계속 계산 => n이 0보다 클때까지 반복저장된 String 변수를 뒤집어서 출력(char)(d - 10 + 'a')A는 10을 뜻하는 문자 -> d에서 10을 빼주고 (0부터 세기 시작)'A'를 더해서 알맞은 대문자 알파벳을 만들기 import java.util.Scanner;public class test1 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); ..
https://www.acmicpc.net/problem/10448 1. 삼각수를 매번 구하지 말고 k의 최댓값이 1000이므로 합은 1000보다 작아야함 -> T44까진 구해야함2. 삼각수의 합을 모두 구해서 검사하는 삼중 for문으로 구현하지 말고-> 먼저 삼각수 두 수의 합이 1000을 넘는 것은 넘기고 1000이하인 경우만 다시 삼각수를 더한다3. 삼각수 3개의 합을 나타낸 배열에 저장하여 입력받은 수를 바로 검사하여 출력한다 삼중for문보다 조건을 검사하면서 경우의 수를 줄이면 시간 복잡도가 훨씬 줄어듬을 알 수 있다 import java.util.Scanner;public class test1 { //세 삼각수의 합으로 표현 가능한지 여부를 나타내는 배열 static boole..
https://www.acmicpc.net/problem/3273 입력 받는 숫자의 최대값만큼의 배열길이를 같는 배열 생성x의 값이 충분히 크면 i의 범위가 배열의 인덱스를 벗어날 수 있기 때문에 범위 조건을 검사i와 x-i가 같으면 안됨, 중복된 순서쌍을 제거 => (x-1)/2까지 순회i와 x-i가 인덱스인 값이 0보다 커야 입력을 받은 것 import java.util.Scanner;public class boj { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] nums = new int[1000001]; ..
https://www.acmicpc.net/problem/10989 입력 받는 개수의 최댓값이 10^7이기 때문에 bufferedreader를 사용입력받는 수만큼 출력하기 때문에 bufferedwriter 사용입력받는 수의 범위는 1부터 10000이기 때문에 배열을 생성인덱스를 입력받는 숫자로 하여 카운트 값을 배열의 값으로 한다입력이 끝나면 배열을 순차적으로 접근하여 카운트 수 만큼 출력한다 import java.io.*;public class boj { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in..
https://www.acmicpc.net/problem/10431 입력은 test배열에 저장, 정렬된 배열은 sortedtest 배열의 처음부터 하나씩 접근하여 sorted 배열에 현재 숫자보다 큰 숫자가 있다면 하나씩 밀리기이때 뒤로 이동하는 횟수 cnt 변수에 저장sorted 배열에 현재 숫자보다 큰 수가 없다면 sorted 배열의 가장 뒤에 넣으면 된다=> 여기서 중요한점은 입력순으로 접근하기 때문에 따로 인덱스 처리를 해주지 않고 하나의 for문으로 해결가능하다 import java.util.Scanner;public class boj { public static void main(String[] args) { Scanner sc = new Scanner(System.in..
https://www.acmicpc.net/submit/1236 문자 배열보다 숫자가 편해서 X있는걸 1, 없는걸 0으로 바꿔서 이차원 배열에 저장처음 한 줄을 입력받은 후 꼭 줄바꿈을 해줘야한다문제가 요구하는건 결국 X가 없는 행과 열중에 가장 큰 값이다 따라서 행과 열을 이중 for문으로 돌며 1이 없는 행 /열 개수를 세서 조건 연산자를 통해 큰 값을 출력한다import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); ..