DevBoi

[그리디 구현 예제] 본문

Algorithm/[Etc]

[그리디 구현 예제]

HiSmith 2021. 7. 2. 00:29
반응형

그리디는, 가장 최적의 해를 찾는 알고리즘이다.

우선 가장 쉬운 예제로 한번 테스트해보자

 

특정 금액 1260 원을 받았을때, 동전 거스름돈의 최소 개수를 구하는 로직이다.

그리드 관련 알고리즘은, 가장 큰 범위의 탐색 및 로직을 먹이는 것이다.

 

 

그다음 그리드 문제

 

 

 

 

처음에, %4가 0 일떄를 체크해서, 가장 나누기를 우선적으로 수행하면 된다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

해당 완전탐색으로, 풀어버리면된다.

저런문제가 나오면 완전탐색을 하라고 하는거니까.. 그냥 완전 탐색하면된다.

 

 

 

 

 

 

 

 

 

import java.util.*;
import java.lang.*;
class main2 {
  public static void main(String[] args) {
    
    //스캐너
    Scanner sc = new Scanner(System.in);
    //시간 입력받음
    char[] datas = new char[2];
datas = sc.next().toCharArray();
    
    //총 카운트
    int count =0;
   
    //입력받은 값의 x,y좌표
    int y = datas[1] - 48;
    int x = datas[0] - 96;
   
   
     if(x-2 > 0 && x-2 <=8)
     {
       if(y + 1 > 0 && y + 1 <=8)
       {
        count += 1; 
       }
         
       if(y - 1 > 0 && y + 1 <=8)
       {
         count += 1;
       }
     }
      
      if(x+2 > 0 && x+2 <=8)
     {
        if(y + 1 > 0 && y + 1 <=8)
       {
         count += 1;
       }
         if(y - 1 > 0 && y + 1 <=8)
       {
         count += 1;
       }
     }
      if(y-2 > 0 && y-2 <=8)
     {
         if(x + 1 > 0 && x + 1 <=8)
       {
         count += 1;
       }
         if(x -1 > 0 && x - 1 <=8)
       {
         count += 1;
       }
       
     }
      if(y+2 > 0 && y+2  <=8)
     {
        if(x + 1 > 0 && x + 1 <=8)
       {
         count += 1;
       }
         if(x - 1 > 0 && x - 1 <=8)
       {
         count += 1;
       }
     }
      
    
    
    System.out.println(count);
    
    
  }
}

 

 

 

동일하게 완전 탐색으로, 문제 해결한다. 단순? 단순히 요구사항대로, 체크를 하면된다.

시뮬레이션이라고 생각하면된다.

반응형