Super Kawaii Cute Cat Kaoani
본문 바로가기

{Algortihm}/Java17

[백준] 1940번: 주몽의 명령 - JAVA 백준에 신기한 문제가 많다는 건 알고 있었는데 냅다 이름이 주몽으로 되어있어서 좀 웃겼던 문제주몽님 보고계신가요 21세기엔 철기군을 양성하기 위해서 코딩을 합니다   ✍️풀이방식 1. 재료의 개수 , 갑옷만드는 데 필요한 수 정의 후 입력받기2. N개의 재료들이 가진 고유한 번호들이 공백을 사이에 두고 주어짐 3. 받은 재료를 정렬해서 풀기 (후에 투 포인터 사용)   투 포인터 이동 원칙 A[i] + A[j] > M; j--; // 번호의 합이 M보다 크기 때문에 큰 번호 index 감소 A[i] + A[j] > M; j--; // 번호의 합이 M보다 작으므로 작은 번호 index 증가 A[i] + A[j] > M; j--; // 양쪽 포인터를 모두 이동시키면 count 증가    🖥️문제풀이  im.. 2024. 11. 13.
[백준] 2018번: 연속된 자연수의 합 구하기 - JAVA ✍️풀이방식 투 포인터를 활용해서 풀기 O(n)의 시간복잡도 알고리즘 사용할 것 * 입력되는 연산 수가 많으면 꼭 시간복잡도를 생각해서 관련 알고리즘을 적용시켜야합니다.    투 포인터 알고리즘이란?  1차원 배열에서 각자 다른 원소를 가리키고 있는 2개의 포인터를 조작해가면서 원하는 값을 찾을 때 까지 탐색하는 알고리즘1. 시작점과 끝점이 첫번째 원소의 인덱스를 가리키도록 한다. (strat, end) 2. 현재 부분 합이 M과 같다면 count3. 현재 부분 합이 M보다 작다면 end를 1 증가 4. 현재 부분 합이 M보다 크거나 같다면 start를 1 증가5. 모든 경우를 확인할 때까지 2-4번 과정을 반복         투 포인터 관련 개념 참고하였습니다. https://butter-shower... 2024. 11. 11.
[백준] 11659번: 구간 합 구하기 4 - JAVA 백만년만에 코테를 풀어봤습니다... (앞으로 꾸준히 풀자)    ✍️풀이방식 1초에 1억번 연산 -> 0.5초면 5천만번 연산이 일어난다는 뜻 데이터의 범위가 100,000을 넘어가는 것을 주의하면서 풀 것!  합 배열을 이용한 구간합을 사용해서 문제를 풀 것  합배열, 구간합 공식 S[i] = S[i-1]+A[i]   // S가 합배열 S[j]-S[i-1] // 구간합 공식   또한 받는 데이터의 양이 많기 때문에 Scanner가 아닌 Buffer로 구현할 것 (까먹지 말기...)     🖥️문제풀이 import java.util.*;import java.io.*;public class Main{ public static void main(String[] args) throws IOException .. 2024. 11. 10.
[JAVA] 자바 코딩 테스트 정리 * 인프런 강의를 보면서 정리 (내용 계속 추가 될 예정) 일반적으로 수행 시간은 1억 번의 연산을 1초의 시간으로 간주하여 예측한다 시간 복잡도 유형빅 오메가 : 최선일 때 연산 횟수를 나타낸 표기법 빅 세타: 보통일 때 연산 횟수를 나타낸 표기법 빅 오 : 최악일 대 연산 횟수를 나타낸 표기법 -> 코딩 테스트에서 선택하는 표기법 연산 횟수 계산 방법연산 횟수 = 알고리즘 시간 복잡도 * 데이터의 크기 시간 복잡도 도출 기준상수는 시간 복잡도 계산에서 제외한다가장 많이 중첩된 반복문의 수행 횟수가 시간 복잡도의 기준이 된다 시간 초과과 되었을 땐 내 로직이 효율적인 지 다시 점검해야한다 (1) 알맞은 알고리즘 선택 기준(2) 비효율적인 로직 찾아서 효율적으로 바꾸기 프로그램에.. 2024. 8. 28.
[백준] 1546번: 평균 - JAVA ✍️풀이방식 변환 점수의 평균을 구하는 식(점수가 A,B,C 인 경우) (A/M*100+ B/ M*100+ C/ M*100)/3=( A+B+C)* 100/M/3 즉 총합*100/최대값/3이 출력값이 되어야한다.     🖥️문제풀이import java.util.*;import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine());// 개수 입력 받기 St.. 2024. 8. 14.
[백준] 11720번: 숫자의 합 - JAVA ✍️풀이방식 숫자의 개수가 최대 100자리로 int, long형 같은 숫자형으로 담을 수 없다 문자열 형태로 입력값을 받은 후 이를 문자 배열로 변환하고 문자 배열값을 순서대로 읽으면서 숫자형으로 변환하여 더해야한다. -> toCharArray 함수를 사용하면 이 과정을 쉽게 할 수 있다   toCharArray() Java.Lang.String 클래스의 메서드로 문자열을 문자형 배열로 변환할 수 있다.문자 배열의 길이는 문자열의 길이와 같으며, 공백 또한 문자형으로 변환된다. ✔️ 아스키코드에서 같은 의미의 문자와 숫자의 코드값 차이는 48이다 문자 '1'은 아스키코드 값이 49이므로 문자 '1'을 숫자 1로 변환하려면 '1'- 48또는 '1'-'0'으로 연산해야한다.        🖥️문제풀이 imp.. 2024. 8. 14.
[백준] 2588번: 곱셈 - JAVA ✍️풀이방식 1. charAt 함수를 사용해서 푸는 방법 (scanner 사용)2. BufferedReader 사용해서 푸는 방법    charAt 함수란?    String 타입의 데이터(문자열)에서 특정 문자를 char 타입으로 변환할 때 사용하는 함수charAt(i) // String의 글짜 중 i번째 있는 글자를 리턴          🖥️문제풀이 1번 charAt 함수를 사용해서 푸는 방법 (scanner 사용)  import java.util.Scanner;public class Main{ public static void main(String[] args){ Scanner in = new Scanner(System.in); int A= in.nextInt.. 2024. 6. 11.
[백준] 1000번 : A+B - JAVA ✍️풀이방식   1. scanner 사용해서 푸는 방법2. BufferedReader 사용해서 푸는 방법    이때까지 입출력을 받을 땐  1번 방법인 Scanner 방식을 많이 사용했었는데 코테에선 빠르게 입력 받는 것이 중요하기 때문에 보통 BufferedReader 방식을 사용해봤다    BufferedReader버퍼는 스트림과 프로그램 간에 데이터를 효율적으로 전송하려고 사용하는 메모리입출력 장치와 프로그램 간 동작 속도가 크게 차이가 날 때 버퍼를 사용하면 매우 효율적readLine은 BufferedReader 클래스에서 제공하는 메서드로, 입력 스트림으로부터 한 줄의 텍스트를 읽어오는 기능을 한다  ( readLine() 은 한 행을 읽어오고, read() 는 한 문자만 읽어온다) import.. 2024. 6. 8.