[JAVA-알고리즘] 5-1 예제1

편준민's avatar
Feb 07, 2025
[JAVA-알고리즘] 5-1 예제1
관람차 A는 15분마다 한 바퀴 회전 관람차 B는 20분마다 한 바퀴 회전 두 관람자가 동시에 원래 위치로 돌아오는 최소 시간은?

1. 브루트 포스로 해결하기

💡

브루트 포스(Brute Force)란?

  • 모든 경우의 수를 하나씩 직접 검사하여 답을 찾는 방법
  • *"완전 탐색"**이라고도 불림
  • 효율성은 낮지만, 정답을 반드시 찾을 수 있음
  • 하지만 시간복잡도가 높기 때문에 최적화가 필요

1. 하드코딩

package algo; public class BruteForce { public static void main(String[] args) { //관람차 A는 15분마다 한 바퀴 회전 //관람차 B는 20분마다 한 바퀴 회전 //두 관람자가 동시에 원래 위치로 돌아오는 최소 시간은? int a = 0; int b = 0; // 15분 a = a + 15; System.out.println("A 한바퀴 : " + a); // 30분 a = a + 15; System.out.println("A 한바퀴 : " + a); // 45분 a = a + 15; System.out.println("A 한바퀴 : " + a); // 60분 a = a + 15; System.out.println("A 한바퀴 : " + a); System.out.println(); // 20분 b = b + 20; System.out.println("B 한바퀴 : " + b); // 40분 b = b + 20; System.out.println("B 한바퀴 : " + b); // 60분 b = b + 20; System.out.println("B 한바퀴 : " + b); } }

2. 공통 모듈 만들기

package algo; public class BruteForce { public static void main(String[] args) { //관람차 A는 15분마다 한 바퀴 회전 //관람차 B는 20분마다 한 바퀴 회전 //두 관람자가 동시에 원래 위치로 돌아오는 최소 시간은? int a = 0; int b = 0; for (int i = 0; i < 4; i++) { // 15분 a = a + 15; System.out.println("A 한바퀴 : " + a); } System.out.println(); for (int i = 0; i < 3; i++) { // 20분 b = b + 20; System.out.println("B 한바퀴 : " + b); } } }

3. 최종

package algo; public class BruteForce { public static void main(String[] args) { //관람차 A는 15분마다 한 바퀴 회전 //관람차 B는 20분마다 한 바퀴 회전 //두 관람자가 동시에 원래 위치로 돌아오는 최소 시간은? int a = 0; int b = 0; System.out.println("a가 돌아오는 시간의 주기"); for (int i = 0; i < 4; i++) { // 15분 a = a + 15; System.out.print(a + " "); } System.out.println(); System.out.println("b가 돌아오는 시간의 주기"); for (int i = 0; i < 3; i++) { b = b + 20; System.out.print(b + " "); } System.out.println(); System.out.println("동시에 오는 시간은 : " + a); } }
 

2. 최소공배수로 해결하기

package algo; public class Lcm02 { public static void main(String[] args) { int a = 15; int b = 20; Gcd04.gcd(a, b); System.out.println(a * b / Gcd04.gcd(a, b)); } }
notion image
 
Share article

YunSeolAn