문제: 정수를 담고 있는 배열 arr의 평균값을 return 하는 함수, solution을 완성

 

제한조건: 

arr은 길이 1이상, 100이하인 배열

arr의 원소는 -10,000 이상, 10,000이하인 정수

 

코드

 

class Solution {

 public double solution(int[] arr) {

 int sum = 0;

 for(int i=0; i < arr.length; i++) {

 sum += arr[i];

 }

 

 double answer = (double) sum / arr.length;

 return answer;

 }

}

 

>> 배열의 길이는 legnth

>> answer 타입이 double으로 형변환 해야 한다는거  (알아두기_ int형은 소수점 뒷 자리들은 버려진다!)

 

>> 형변환 관련 참고 블로그 

https://dodo-factory.tistory.com/m/9

 

[JAVA] 형 변환 / 문자열<->숫자, 정수<->실수

문자(열) 숫자 String To Int String s = "12345"; int i = Integer.parseInt(s); String s = "12345"; int i = Integer.valueOf(s); Int To String int i = 12345; String s = Integer.toString(i); int i = 12345; String s = String.valueOf(i); 마찬가지로 Doub

dodo-factory.tistory.com

 

/*
      (1)
    ↙  ↘
   (2)   (3)

 ↙  ↘

(4)  (5)

Inorder (Left, Root, Right): 4 2 5 1 3
Preorder (Root, Left, Right): 1 2 4 5 3
Postorder (Left, Right, Root): 4 5 2 3 1
*/

class Node{
 int data;
 Node left;
 Node right;
}

class Tree {
  public Node root;

  public void setRoot(Node node) {
    this.root = node;
  }
  public Node getRoot() {
    return root;
  }
  
  public Node makeNode(Node left, int data, Node right) {
    Node node = new Node();
    node.data = data;
    node.left = left;
    node.right = right;
    return node;
    }
  public void inorder(Node node){
    if(node != null) {
      inorder(node.left);
      System.out.println(node.data);
      inorder(node.right);
    }
  } 
  public void preorder(Node node){
    if(node != null) {
      System.out.println(node.data);
      preorder(node.left);
      preorder(node.right);
    }
  }
  public void postorder(Node node){
    if(node != null) {
      postorder(node.left);
      postorder(node.right);
      System.out.println(node.data);
    }
  } 
public class Test {
  public static void main(String[] args){
    Tree t = new Tree();
    //마지막 노드부터 생성한다
    Node n4 = t.makeNode(null, 4, null);
    Node n5 = t.makeNode(null, 5, null);
    Node n2 = t.makeNode(n4, 2, n5);
    Node n3 = t.makeNode(null, 3, null);
    Node n1 = t.makeNode(n2, 3, n3);
    t.setRoot(n1);
    t.preorder(t.getRoot());
    } 
  }
}

'Algorithm' 카테고리의 다른 글

프로그래머스 lv1_평균구하기_JAVA  (0) 2022.10.18
이진트리의 3가지 순회방법 정리 - DFS  (0) 2022.10.13
이진수 출력(재귀)  (0) 2022.10.11
재귀함수(스택프레임)  (0) 2022.10.10
이분검색  (0) 2022.10.07

'Algorithm' 카테고리의 다른 글

이진트리의 3가지 순회방법 정리 - DFS  (0) 2022.10.13
피보나치 재귀(메모리제이션)  (0) 2022.10.12
재귀함수(스택프레임)  (0) 2022.10.10
이분검색  (0) 2022.10.07
LRU (Least Recently Used)  (0) 2022.10.06

[문제]

FOOD_WAREHOUSE 테이블에서 경기도에 위치한 창고의 ID, 

이름, 주소, 냉동시설 여부를 조회하는 SQL문을 작성해주세요. 

이때 냉동시설 여부가 NULL인 경우, 'N'으로 출력시켜 주시고 

결과는 창고 ID를 기준으로 오름차순 정렬해주세요.

 

문제를 보자마자, 아는 지식안에서 풀어본다.

 

첫째.경기도만 출력하는 거에서 막힌다.

 WHERE ADDRESS LIKE '경기도%' 

 

WHERE LIKE 사용법과 ' %' 이 사용법을 배운다.

 

두번째.냉동시설 여부가 NULL인 경우, 'N'으로 출력

CASE WHEN ~THEN ~ELSE END   (참고ㅡ블로그 https://joke00.tistory.com/103)

자바의 IF ELSE와 비슷하다.

 

CASE WHEN FREEZER_YN IS NULL THEN 'N' ELSE FREEZER_YN END

 

세번쨰. 오름차순 정렬?

 

기본적으로 SQL 오름차순이더라. 정렬하는 포인터만 잡으면 된다.

ORDER BY WAREHOUSE_ID

 

 

<완성된 SQL>

 

SELECT WAREHOUSE_ID
    ,WAREHOUSE_NAME
    ,ADDRESS
    ,CASE WHEN FREEZER_YN IS NULL THEN 'N' ELSE FREEZER_YN END
FROM FOOD_WAREHOUSE 
WHERE ADDRESS LIKE '경기도%'
ORDER BY WAREHOUSE_ID

 

+ Recent posts