전체 글 131

[백준 17425] 약수의 합 - Java

📌 문제 링크https://www.acmicpc.net/problem/17425 📄 문제 설명🧠 문제 접근비슷한 문제인 [약수의 합2] 코드를 떠올리며 풀었다. 처음에는 무작정 주어진 테스트 조건일때마다 합을 구했더니 시간 초과가 떴다. 그래서 아예 먼저 T의 최대 수인 1,000,000까지 약수의 합을 구해두기로 하였다. ✅ 내가 제출한 코드import java.io.*;public class Main { public static void main(String[] args) throws IOException { int MAX = 1000000; BufferedReader br = new BufferedReader(new InputStreamReader(System.i..

[백준 17427] 약수의 합 2 - Java

📌 문제 링크https://www.acmicpc.net/problem/17427 📄 문제 설명 🧠 문제 접근먼저 문제를 접했을 때는 아래와 같이 해석하였다. f(A)는 A의 모든 약수를 더한 값이고 G(N)은 N보다 같거나 작은 자연수들의 각각의 f(N)의 합이다. 그래서 나는 일일히 코드로 f(a)와 g(N)을 코드로 구현하였다. 그랬더니 시간 초과라는 결과가 나왔다.. 이유는 예를 들어 N=6이면f(1) = 1f(2) = 1 + 2f(3) = 1 + 3f(4) = 1 + 2 + 4f(5) = 1 + 5f(6) = 1 + 2 + 3 + 6 for문을 통해 위와 같이 구했다. 이걸 이렇게 다 더하게 되면 O(N^2)가 되어 너무 느리게 된다. 그래서 아래와 같이 발상의 전환을 해보았다. 약수의 ..

[백준 1037] 약수 - Java

📌 문제 링크https://www.acmicpc.net/problem/1037 📄 문제 설명 🧠 문제 접근처음에 문제를 읽고 최소 공배수를 구해야한다는 것을 바로 알아챘다... 근데 최소 공배수를 구할려면 꽤나 복잡하게 코드를 작성해야한다. 그래서 혹시나 다른 방도가 있나 싶어 숫자들을 쭉 나열해 보았다. 예제에서 보면 약수에서 1과 자신은 포함하지 않고 진짜 약수만 나열하는 것을 알 수 있다. 그래서 아래 처럼 나도 쭉 나열해보았다. 4일 경우 : 26일 경우 : 2 38일 경우 : 2 424일 경우 : 2 3 4 6 8 12 보다시피 진짜 약수를 오름차순으로 정렬했을 때, 첫번째와 마지막 숫자를 곱하면 최소 공배수가 나옴을 알 수 있다. 이 방법을 통해 간단하게 코드를 작성하였다..!! ✅ ..

[백준 4375] 1 - Java

📌 문제 링크https://www.acmicpc.net/problem/4375 📄 문제 설명🧠 문제 접근해당 문제는 모듈러 분배 법칙을 활용하여 풀어야 하는 문제이다. 왜 모듈러 분배 법칙을 사용해야되냐?? 바로 1, 111, 1111, 11111,,,,, 이런식으로 n이 나눠야하는 값이 무한대로 커지기 때문에 모듈러 분배법칙을 사용해야한다. 이 큰 수의 나머지가 0인지만 알면 되기 때문에 모듈러 분배 법칙을 사용한다. 아래 내 코드를 보면 num = (num * 10 + 1) % n 을 볼 수 있다. 이게 왜 나오게 되었는지, 아래 필기를 첨부하겠다.. ✅ 내가 제출한 코드import java.io.*;public class Main { public static void main(S..

[기초 수학] 모듈러 분배 법칙

모듈러 분배 법칙이란? 위에 처럼 생긴...공식이다.. 수포자인 나에게는 그냥 분배 법칙은 들어봤어도 모듈러? 분배법칙??? 누구세요 였다. 코테에 자주 나오는 공식이라하니 이참에 잘 정리해둘려고 한다. 먼저 모듈러가 무엇일까?분배 법칙까지는 고등 교육을 받은 지성인이라면..알거라고 생각한다. 하지만 모듈러.. 이건 도대체 무슨 뜻일까 찾아보니 나누어지는 개념과 비슷하다는 것을 확인할 수 있엇다. 그렇다면 이제 모듈러 + 분배 법칙은 무슨 법칙일까? 초등학생도 이해하기 쉬운 모듈러 분배 법칙 예시 나랑 친구들이 있고, 어떤 초콜릿 조각을 나누고 싶다.예를 들어, 초콜릿 11개를 3명이서 나누면 몇개씩 줄 수 있을까? 11 ÷ 3 = 3 조각씩 나누어 줄 수 있고 2조각이 남는다.이 남은..

[백준 1063] 킹 - Java

📌 문제 링크https://www.acmicpc.net/problem/1063 📄 문제 설명🧠 문제 접근1. 처음에는 2차원 배열로 푸는 것을 생각 했지만..복잡해질거 같아. 아스키 코드로 처리하기로 했다.2. 첫줄에 킹 위치, 돌위치, 횟수 N을 입력 받는다.3. 위치의 각각 행과 열의 문자는 char형태로 받아둔다4. 들어온 명령문에 따라 switch문으로 처리해준다.5. 이 때 돌의 위치와 겹치는 경우 돌도 같은 방향으로 1만큼 움직여줘야하는데, 이 움직임이 체스판에 벗어나지 않는지 확인해준다.6. 만약 돌도 움직일 수 있는 상태라면, 킹도 움직일 수 있는 것으로 판단한다. ✅ 내가 제출한 코드import java.io.*;public class Main { public static ..

[백준 3048] 개미 - Java

📌 문제 링크https://www.acmicpc.net/problem/2884 📄 문제 설명 🧠 문제 접근1. 각 그룹의 개미수를 한줄에 " "을 두고 입력 받는다2. 첫번째 그룹 같은 경우에는 왼쪽에서 오른쪽으로 이동하기 때문에 반전 시켜준다. 3. T에 시간을 입력 받는다.4. 첫번째 그룹과 두번째 그룹을 합친 배열을 만들어준다.5. 이때 각 그룹의 방향이 담긴 배열도 똑같은 길이로 만들어 준다.6. 이제 T초 동안 서로 마주봤을 경우 위치를 바꾸게 한다. 만약 위치가 변경 되면 다다음 순서로 넘어가게 한다. ✅ 내가 제출한 코드import java.io.*;public class Main { public static void main(String[] args) throws IOExce..

[백준 2884] 알람 시계 - Java

📌 문제 링크https://www.acmicpc.net/problem/2884 📄 문제 설명 🧠 문제 접근 일단 한줄에 시와 분을 입력받기 때문에 이걸 " "으로 나누어 각각 H , M 에 값을 넣어준다 그 다음 먼저 입력 받은 분에 45를 빼준다. 이제 -45 된 분 값을 기준으로 최종 시계 값을 구한다. 만약 계산 된 값이 음수일 경우 최종 분은 60 - (계산된 값) 이기 때문에 60 + [계산된 값]으로 수식을 짜준다.(말을 잘 못함 ㅋㅋ)이때 H은 -1을 해주고 00시 일경우를 대비하여 만약 H가 음수일 경우 24에서 빼주는 것으로 계산한다. 계산 된 값이 0일 경우에는 00분이 된 것으로 H은 그대로 둔다. 만약 계산 된 값이 양수일 경우에는 계산 된 값 그대로 M에 넣어주고 H도 그..

[백준 2490] 윷 - Java

📌 문제 링크https://www.acmicpc.net/problem/2490 📄 문제 설명 🧠 문제 접근 한 줄에 여러 값을 공백을 두고 입력 받아야한다. 그러면 한줄씩 입력 받을 때 마다 공백을 두고 각 문자의 값에 따라 count 값을 올려준다. 최종적으로 나온 count 값에 따라 윷 놀이의 결과값을 출력해준다. 이때 매번 sout 해주는 것은 비효율적이기 때문에 StringBuilder 을 사용하여 마지막에 한꺼번에 출력한다. ✅ 내가 제출한 코드import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new Buff..

[백준 10798] 세로 읽기 - Java

📌 문제 링크https://www.acmicpc.net/problem/10798 📄 문제 설명 🧠 문제 접근 이 문제는 불규칙한 2차원 배열의 문제이다!먼저 2차원 배열을 선언해줍니다. A[5][15] - 세로로 5줄, 가로로 최대 15글자각 줄의 값을 스트링 배열로 각각 받아온다받아온 각 줄의 값을 char.at으로 한글자씩 char[] 배열에 넣어준다그 다음 스트링 버퍼를 선언하여 각 세로줄의 값들을 넣는다이때 가로줄의 길이를 체크하여 for문을 돈다. ✅ 내가 제출한 코드import java.io.*;public class Main { public static void main(String[] args) throws IOException { BufferedReader br ..