알고리즘 : 프로그래머스 : 두 정수 사이의 합 : 난이도 하 : JAVA

2022. 1. 14. 22:48알고리즘/프로그래머스

반응형

항해99 2주차가 되어 알고리즘 수업을 시작하였다. 각자 공부하고 프로그래머스 문제를 푸는 것이었다. 

JAVA도 처음이고, 문법도 처음이었다. 그래서 일단 JAVA의 전체 숲을 한번 보고싶어서 프로그래머스에 있는 무료 자바 기초 강의를 5주차 중간까지 2배속으로 재생하여 듣고 시간이 다되어 내가 맡은 문제를 풀어보았다...

응?

어라?

이게 뭐지?

분명히 수업을 들었는데, 실습을 하나하나 않해보고 빨리 1독하고 2독할 때 꼼꼼하게 따라쳐보려고 해서 그런지 문제 대입을 전혀 하지 못하고 있는게 아닌가...

당황 또 당황을 하였다.

그런데 난이도 하!

이럴수가...

이게 알고리즘이구나...

하하하하

일단 도저히 못풀겠어서 구글링을 하여 답을 몇개 보고 풀었다...

프로그래머스로 2독을 하면서 꼼꼼하게 풀어보며 구현력을 키워봐야겠다!!!

다른 조원들 것들도 있는데,,, 그건... 내가 공부를 일단 좀 해보고 추가해야겠다!

내 힘으로 팍팍 풀어보고 싶다...


<문제 설명>


<제한 조건>


<입출력 예>


<통과 코드>

 


<설명>

class Solution {
  public long solution(int a, int b) {
      long answer = 0;
      if (a < b) {                 //a가 b보다 작다면
          for (int i = a; i <= b; i++) {    //a부터 b까지 돌려라  
          answer += i; // 나오는 값에서 1씩 올려서 더해라  
          }   
      } else {
          for (int i = b; i <= a; i++) {  // 그렇지 않으면 b부터 a까지 돌려라
          answer += i;                // 나오는 값에서 1씩 올려서 더해라
          }
      }     
     return answer;                 //그 값을 리턴해라
  }
}

: 알긴 알겠는데,,, a와 b가 똑같은 숫자 3이 되었을 때 하나만 나오게 해야하는데

위에 공식으로는 100% 와 닿지가 않았다... 

이해가 2% 뭔가 부족해서 다른 공식을 찾아보았는데...


<새로운 해결법>

class Solution {
    public long solution(int a, int b) {
    long answer = 0;
    int max;
    int min;
    if (a>b){
      max = a;
      min = b;
    } else {
      max = b;
      min = a;
    } 
    for(long i = min; i <= max; i++)
      answer += i;
      return answer;
  } 
}

: 100% 이해되는 풀이법을 찾았다. 아예 a와 b를 a가 더 클경우와 아니면 b가 더 크다고 잡아놓고

for문으로 돌리는 방식이 마음에 들었다.

 

 

 

 

 

 

 

 

 

반응형