greenhelix
greenhelix
greenhelix
05-09 04:03
  • All (229)
    • Algorithm (118)
      • Algorithm (17)
      • Graph (0)
      • Core (6)
      • Python (18)
      • PythonSnippet (4)
      • Java (59)
      • Kotlin (14)
    • Project (0)
    • Study (8)
      • License (5)
      • EIP (3)
    • Programming (63)
      • Android (41)
      • Flutter (1)
      • Bugs Life (21)
      • Linux (0)
    • Tech (32)
      • Tech (17)
      • Drone (4)
      • Hacking (11)
    • Life (6)
      • INGRESS (1)
      • 심시티빌드잇 (0)
250x250

티스토리

hELLO · Designed By 정상우.
greenhelix

greenhelix

#22_Code Signal Arcade >> Avoid Obstacles
Algorithm/Java

#22_Code Signal Arcade >> Avoid Obstacles

2019. 11. 25. 12:00

Code Signal -Arcade

코드시그널
아케이드 문제 관련 풀이들을 구글링하면서 찾아가는 일지를 하나씩하나씩 기록하고자 합니당. 

주로 자바 위주로 풀이를 올릴예정이고, 추가로 공부하고 있는 파이썬이나 코틀린, GO, 자바스크립트 더 나아가 스위프트까지...

되는대로 가능한대로 구글링하고 정답맞추면 바로 패스!!
이런식으로 좋은 코드이든 말든 짜집기한 결과물들을 개인적 소장을 위해 기록합니다. ^^
참고 사이트들은 아래에 링크로 남겨둘터이니 자세하고 더욱 깊은 내용들은 링크로 들어가보세요!


Avoid Obstacles

장애물 피하기 

 

문제를 보면, 주어진 숫자배열을 봤을 때, 이 수들은 장애물의 좌표가 된다. 

이동은 양수방향으로 할수 있으며, 해당 장애물들의 사이로만 점프가 가능하다. 

 

그 점프거리의 최소값을 반환하라는 문제입니당. 

 

저는 결론적으로 못풀었는데, 답안을 보겠습니당..ㅜㅜ

 

int avoidObstacles(int[] put) {

      for(int i = 2;;i++){
          
        boolean t = true;
          
        for(int n:put)

         t = t && n%i != 0;
     
        if(t) return i;
    } 
}

 

굉장히 간단하더군요.. 

이 코드를 이해하기 전에 일단 boolean logic 을 다시 좀 찾아보게 되더군요.. 쿰척하게...ㅜㅠㅠ

 

http://www.danfletcherblog.ca/2015/09/and-java-operators-explained/

 

++ && != and %= Java Operators Explained - Dan Fletcher Blog

My discussion assignment at school was to explain the following operators in Java; ++ (increment) && (logical AND) != (not equal) %= (modulus assignment). I thought the quality of my post was good enough to share here, so here it is. The Increment Operator

www.danfletcherblog.ca

일단 좀 이해가 됬나요?

 

  t = t && n%i != 0;
  

이코드의 핵심은 바로 이부분이죠? 

 

이말이 무엇이냐 하면,  주어진 숫자배열에서 모든값에 i 의 값으로 나눠 보는 겁니다. 

그리고 그 나머지가 0이 아닌 다른값이 다 나오는가? 이것을 보는 건데요. 

즉, 

[5, 3, 6, 7, 9]  이 있다고 칠때, 
이중에 어느 것에도 떨어지지 않는 값은 4가 최소입니다. 그쵸?
바로 이부분을 내보내주는 코드라고 보시면 됩니다. 

그리고 i 의값은 최소 2부터 시작합니다. 1은 모든 수에 다 나눠지니깐 제외하는거죠.

 

간단히 하면 나머지 값이 0이 절대 나오면 안되는겁니다.

 

그 값이 바로 해당 수가 아닌이상 배열들 값들의 사이에 최소값이 되는 원리인것이죠. 

 

이해가 되시나요... 저도 한참을 멍하니...멍청해서 ㅠㅠ

 

아무튼 이렇게 하면, 나눠떨어지지 않는 값이 존재하게 되는 i값을 나오게 되고, if절을 통해서 그  i 값을 리턴해줍니다. 

 

단 조건은 if(t) t가 true를 나타낼 때 인것입니다. ㅎㅎ

 

끝...

 


다음은 정답자들의 코드를 올려두겠습니다. 저도 나중에 참고용으로 ㅋㅋ 

 

JAVA

int avoidObstacles(int[] inputArray) {

    int jump = 1;
    boolean fail = true;
    
    while(fail) {
        jump++;
        fail = false;
        for(int i=0; i<inputArray.length; i++)
            if(inputArray[i]%jump==0) {
                fail = true;
                break;
            }
    }
    
    return jump;
}

JS

function avoidObstacles(arr) {
  for(var n=1;;n++) if(arr.every(x=>x%n)) return n
}

PYTHON3

def avoidObstacles(inputArray):
    c = 2
    while True:
        if sorted([i%c for i in inputArray])[0]>0:
            return c
        c += 1
728x90
반응형
저작자표시 비영리 변경금지

'Algorithm > Java' 카테고리의 다른 글

#23_Code Signal Arcade >> Box Blur  (0) 2019.11.26
#21_Code Signal Arcade >> Is IPv4 Address  (0) 2019.11.23
#20_Code Signal Arcade >> Array Maximal Adjacent Difference  (0) 2019.11.22
    'Algorithm/Java' 카테고리의 다른 글
    • #24_Code Signal Arcade >> Mine Sweeper
    • #23_Code Signal Arcade >> Box Blur
    • #21_Code Signal Arcade >> Is IPv4 Address
    • #20_Code Signal Arcade >> Array Maximal Adjacent Difference
    greenhelix
    greenhelix
    개발에 관한 것들과 개인적인 것을 담는 블로그

    티스토리툴바