231201 YIL 알고리즘 복습

HR J·2023년 12월 4일
0

알고리즘

목록 보기
1/1

알고리즘은 내가 평소에 자신있어 하는 부분은 아니라서, 지속적으로 연습이 필요하다.
오전마다 코드카타라 이름 붙인 알고리즘 공부시간을 통해 쉬운 것부터 차근차근 익히는 중이다.
그 중에서 몇 가지 배운 것을 정리하고자 한다.(현재 자바언어를 학습 중이므로 대중적인 C언어가 아니라, 자바로 푸는 것을 연습했다)

Q1. 정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소의 평균값을 return하도록 solution 함수를 완성해주세요.

R. 제한사항

0 ≤ numbers의 원소 ≤ 1,000
1 ≤ numbers의 길이 ≤ 100
정답의 소수 부분이 .0 또는 .5인 경우만 입력으로 주어집니다.

A. 풀이

class Solution {
    public double solution(int[] numbers) {
        double answer = 0;
        int total=0;                             
        for(int i=0; i<numbers.length; i++) {   
            total+=numbers[i];                   
        }
        answer=(double)total/numbers.length;    
        return answer;
    }
}

T. 시행착오

결과적으로는 위와 같이 굉장히 간단한 코드로 끝나지만, 처음에는 i++와 ++i의 차이점을 구별하는 것이 꽤나 헷갈렸다.
우변의 결과값을 다시 좌변에 더한다는 의미의, 코딩에서 자주 사용하는 기호인 '+='표시도 생소했다.
알고리즘에 가장 많이 쓰이는 함수 중 하나가 for 구문이므로, 제대로 익숙해질 필요가 있음을 느꼈다.

평균값은 정수가 아닐 수 있으므로 double로 변수명을 선언해준 뒤, 배열의 total은 배열의 길이와 관련된 변수명이므로 반드시 정수이므로 int로 선언해주는 것도 중요한 포인트였다.

또한, 제한사항을 내가 지정해줘야 하고 생각했는데, 팀원들과 이야기를 나누다 보니 제한사항은 문제에서 어떤 값을 대입할 것이냐는 부분이라 내가 고려할 부분이 아니라고 해서 그 부분은 코딩에서 뺐다.

변수명 선언시 괄호() 표시를 통해 계산식과 같은 좁은 영역에서 변수명 선언을 할 수 있다는 것도 새롭게 알았다.

Q2. 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.

R. 제한사항

x는 -10000000 이상, 10000000 이하인 정수입니다.
n은 1000 이하인 자연수입니다.

A. 풀이

class Solution {
  public long[] solution(int x, int n) {
      long[] answer = new long[n];
      for(int i=0; i<n; i++){
         answer[i] = (long)x * (i+1);
      }
      return answer;
  }
}

T. 시행착오

문제가 길고 복잡해보여서 풀기 전부터 어렵겠다는 생각을 했으나, 막상 풀고 보니 의외로 간단히 끝나는 문제였다.

  • x씩 증가하는 숫자이다 => for 구문을 사용한다
  • n개 지니는 리스트를 리턴한다 => 배열을 사용한다

라고 생각하는 것이 키포인트였다.

역시 어떤 시행을 반복할 때 단골 함수인 for 구문이 활용된다.

x와 n은 각각 정수와 자연수이므로 int로 선언해줌을 볼 수 있다.

자연수는 1부터 시작이므로, i<n이라는 조건식을 쓰기 위해서는 i=1이 아닌 i=0이라는 것을 주의해야 한다.

본격적인(?) java의 느낌이 드는, new를 통한 객체의 인스턴스화로 결과를 return할 수 있었다.

(long)x* (i+1)이라는 계산식이 처음에는 선뜻 떠오르지 않아서 한참을 헤맸다.

x가 10000000라는 큰 수이므로, 위에서 나왔듯 계산식에서 제한적으로 long으로 선언해주는 것이 포인트다. i는 처음에 0이고 계속해서 증가하므로, 배열에 i+1을 곱해서 리턴해야 한다.

profile
Newbie Engineer&Programmer

0개의 댓글

관련 채용 정보