안녕하세요 오늘으 알고리즘 문제를 풀다보면 꼭 알아야하는 시간복잡도에 대하여 알아보겠습니다 ✔ 실제 시간 복잡도를 정의하는 3가지 유형이 있습니다 💡 시간 복잡도 유형 빅-오메가(Big-Ω) = 최선일 때 연산 횟수 빅-세타(Big-θ) = 보통일 때 연산 횟수 빅-오(Big-O) = 최악일 때 연산 횟수 public class Ex { public static void main(String[] args) { //1~100사이의 랜덤값 선택 int randomNum = (int)(Math.random()*100); for (int i = 0; i 1,000,000,000,000 > 200,000,000(부적합) → 병합 정렬 ⇒ 1,000,000log(1,000,000) = 2,000,000 (적합) 이..
백준 2884 알람시계 1) 문제 설명 1) 입력 2) 출력 문제설명은 여기까지하고, 문제 요구 조건 및 풀이를 해보겠습니다. 문제 요구조건 1) 변수 설정 2) 입력 받기 (Sacnner사용) => 추후에 BufferReader로 바꾸기 3) 조건 주기 분이 45분 보다 작을시 시간을 -1 한다 시간이 0보다 작을 시 23으로 바꾼다. 코드 적용 public static void main(String[] args) { Scanner sc = new Scanner(System.in); int hour = sc.nextInt(); int min = sc.nextInt(); if(min < 45) { hour --; // 45보다 작을시 시간을 -1 min = 60-(45-min); if(hour < 0) ..
문제 (세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다. (1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다. 출력 첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다. 요구 조건 세자리 자연수 2개가 주어진다 나눗셈 연산자? 문자열로 입력받아 , chatAt() 메서드 쓰는 것(3) , (4) , (5) ,(6) 에 들어갈 곱셈 기법을 적는 것이다. (3)는 (1)번 전체랑, (2) 번의 세번째 자리수랑 곱한 것 (4)는 (1)번 전체랑..
step 1. 문제 설명 딱 이문제를 보자마자, 이런저런 조건을 주는 if문을 사용해서 풀면 되겠다 라고 저는 생각해봤지만 풀다보닌까, 굳이 if문을 주지않고도 풀 수 있겠다 라는 생각이 들었습니다. 그 방법은 그냥 처음부터 변수 값을 초기화시켜두고 그에 맞춰 입력값에 더하기 빼기 형식으로 해주면은 간단하게 끝나는 것 이였습니다. 1) 변수선언 2) 입력 3) 출력 (println이 아닌 직접 " " 를 통해 띄어 쓰기를 해줘야함) step 2. 코드구현 import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int king = 1; int..
step 1. 문제 설명 저는 자신감 있게 바로 풀었다고 2,3번 해봤는데 왜 자꾸 실패가 나오는지 알지 못했습니다. 그리고 왜 정답률이 50%인줄 깨달았습니다 당연하게 int,long타입을 변수 A,B를 만들어 입력받은 후 출력하는 문제라고 생각했지만 그게 아니었습니다. 최대 10진수로 1000자리를 넘을 수 있다는 조건이 있으므로, int나long타입을 범위를 넘어가는 수가 입력될 수 있기 때문에 BigInteger 클래스를 사용해서 풀어야 합니다. 그리고 BigInteger에 있는 메서드인 add(더하기), subtract(빼기) , multiply(곱하기) 를 사용해서 풀 수 있습니다. step 2. 코드 구현하기 import java.io.BufferedReader; import java.io...
이전글 : 2023.07.27 - [알고리즘(Java)/백준] - [Java]백준11720_숫자의 합 구하기 백준1546_평균구하기 step 1. 문제 분석하기 - 예제입력에서 3 -> 시험을 본 과목의 개수 / 40 80 60 -> 각 과목의 시험 성적 - 평균구하기 (M=최대수) (입력값a+b+c)*100 / M / 3 ->평균 step 2. 손으로 써가면서 풀어보기 step 3. 슈도코드 작성하기 1) 변수 N에 과목의 수 입력받기 2) 길이가 N인 1차원 배열 A[] 선언하기 3) for문으로 A[] 길이만큼 반복하기 { A[i]에 각 점수 저장하기 } 4) for(A[] 길이 만큼 반복하기) { 최고점은 변수 max에 , 총점은 변수 sum에 저장하기 - > 공식 = sum*100 / max /..
백준11720_숫자의 합 구하기 1) 문제 분석하기 1-1) N의 범위가 1부터 100까지 이므로 int형, long형과 같은 숫자형으로 담을 수 없다 1-2) 문자열형태로 입력받고 이를 문자열 배열로 변환 후, 문자 배열값을 순서대로 읽어오면서 숫자형으로 변환해 더해야 합니다. 1-3) 적절한 함수 사용 - 입력 : Scanner - String타입 -> char타입 변환후 배열 : tocharArray - for 반복문 2) 손으로 써가며 풀어보기 3) 슈도코드 작성하기 (Pseudo-code란?프로그램의 진행 과정을 단계별로 기록해 놓은 것. - N값 입력 받기 - N의 숫자를 입력받아 String형 변수 sNum에 저장 - sNum을 다시 char[]형 변수 cNum[]에 변환하여 저장 - int..
1) 문제설명 2) 문제해결class Solution { public String solution(String str1, String str2) { String answer =""; for (int i = 0; i 0) 메인을 생성하지 않고 코드를 짯습니다.1) String타입을 solution 클래스를만들고 파라미터 String타입을 str1, str2을 만들었습니다.2) 입력받을 answer을 빈 문자열로 초기화를 해둡니다 3) for문을 돌려서, str1문자열을 길이만큼 돌게 만듭니다. 3-1) str1 = "aaaaa" , str2="bbbbb" 파라미터 값을 줬다고 가정합니다. 4) i=0일때 for문을 진행시키면 4-1) answer = answer +..