[점프 투 자바] 3장 연습문제 풀이

[점프 투 자바] 3장 연습문제 풀이
점프 투 자바 03장 연습문제 개인적 풀이

Q1

홍길동 씨의 과목별 점수는 다음과 같다. 홍길동 씨의 평균 점수를 구해 보자.

과목점수
국어80
영어75
수학55

풀이

public static void main(String[] args) {
  int[] scores = {80, 75, 55};
  int total = 0;
  for (int value : scores) {
    total += value;
  }
  System.out.println(total/scores.length);
}

Q2

자연수 13이 홀수인지 짝수인지 판별할 수 있는 방법에 대해 말해 보자.

풀이

boolean isOdd(int num) {
  if (num % 2 == 1) {
    return true;
  }else {
    return false;
  }
}

public static void main(String[] args) {
  int myNum = 13;

  Sample sample = new Sample();
  boolean verify = sample.isOdd(myNum);

  System.out.println(verify);
}

Q3

홍길동 씨의 주민등록번호는 881120-1068234이다. 홍길동 씨의 주민등록번호를 연월일(YYYYMMDD) 부분과 그 뒤의 숫자 부분으로 나누어 출력해 보자.

풀이

package org.ssafy.test;

public class Sample {


	public static void main(String[] args) {
		String gildongNum = "881120-1068234";
		String front = gildongNum.substring(0,6);
		String back = gildongNum.substring(7);
		System.out.printf("앞자리 : %s, 뒷자리 : %s", front,back);
	}

}

Q4

주민등록번호 뒷자리의 맨 첫 번째 숫자는 성별을 나타낸다. 주민등록번호에서 성별을 나타내는 숫자를 출력해 보자.

pin = "881120-1068234"

풀이

public static void main(String[] args) {
  String pin = "881120-1068234";
  System.out.println(getSex(pin.substring(7,8)));
}

public static String getSex(String num) {
  if (num.equals("1")) {
    return "male";
  }
  else {
    return "female";
  }
}

Q5

다음과 같은 문자열 a:b:c:d가 있다. 문자열의 replace 함수를 사용하여 a#b#c#d로 바꿔서 출력해 보자.

public class Q5 {

	public static void main(String[] args) {

		String a = "a:b:c:d";		
		System.out.println(a.replace(":", "#"));
	}

}

Q6

다음과 같은 [1, 3, 5, 4, 2] 리스트를 [5, 4, 3, 2, 1]로 만들어 보자.

package jumpToJava;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;

public class Q6 {
    public static void main(String[] args) {
        ArrayList<Integer> myList = new ArrayList<>(Arrays.asList(1, 3, 5, 4, 2));

        Collections.sort(myList, Collections.reverseOrder());
        System.out.println(myList);
    }
}

Q7

다음과 같은 [‘Life’, ‘is’, ‘too’, ‘short’] 리스트를 “Life is too short” 문자열로 만들어 출력해 보자.

package jumpToJava;

import java.util.ArrayList;
import java.util.Arrays;

public class Q7 {
    public static void main(String[] args) {
        ArrayList<String> myList = new ArrayList<>(Arrays.asList("Life", "is", "too", "short"));

		String str = String.join(" ", myList);
		System.out.println(str);
    }
}

Q8

다음의 맵 grade에서 “B’에 해당되는 값을 추출해 보자. (추출하고 나면 grade에는 “B”에 해당하는 아이템이 사라져야 한다.)

package jumpToJava;

import java.util.HashMap;

public class Q8 {
    public static void main(String[] args) {
        HashMap<String, Integer> grade = new HashMap<>();
        grade.put("A", 90);
        grade.put("B", 80);
        grade.put("C", 70);

        System.out.println(grade.remove("B"));  // "B"의 값 출력
        System.out.println(grade.toString()); // {A=90, C=70}
    }
}

Q9

다음의 numbers 리스트에서 중복 숫자를 제거해 보자.

package jumpToJava;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;

public class Q9 {
    public static void main(String[] args) {
        ArrayList<Integer> numbers = new ArrayList<>(Arrays.asList(1, 1, 1, 2, 2, 3, 3, 3, 4, 4, 5));
        HashSet<Integer> set = new HashSet<>(numbers);
        System.out.println(set);
    }
}

Q10

다음은 커피의 종류(1: 아메리카노, 2:아이스 아메리카노, 3:카페라떼)를 입력하면 커피의 가격을 알려주는 프로그램이다.

개선 전 ```java package jumpToJava;

import java.util.HashMap;

public class Q10 { static void printCoffeePrice(int type) { HashMap<Integer, Integer> priceMap = new HashMap<>(); priceMap.put(1, 3000); // 1: 아메리카노 priceMap.put(2, 4000); // 2: 아이스 아메리카노 priceMap.put(3, 5000); // 3: 카페라떼 int price = priceMap.get(type); System.out.println(String.format(“가격은 %d원 입니다.”, price)); }

public static void main(String[] args) {
    printCoffeePrice(1);  // "가격은 3000원 입니다." 출력
    printCoffeePrice(99);  // NullPointerException 발생
} } ```

개선 후 (Enum)

package jumpToJava;

import java.util.HashMap;

public class Q10 {
	enum CoffeeType {
		AMERICANO,
		ICE_AMERICANO,
		CAFE_LATTE
	};


    static void printCoffeePrice(CoffeeType type) {
        HashMap<CoffeeType, Integer> priceMap = new HashMap<>();
        priceMap.put(CoffeeType.AMERICANO, 3000);  
        priceMap.put(CoffeeType.ICE_AMERICANO, 4000);          
        priceMap.put(CoffeeType.CAFE_LATTE, 5000);          
        int price = priceMap.get(type);
        System.out.println(String.format("가격은 %d원 입니다.", price));
    }

    public static void main(String[] args) {
        printCoffeePrice(CoffeeType.CAFE_LATTE);  // "가격은 5000원 입니다." 출력
    }
}

-> 엉뚱한 숫자값에 의한 오류가 발생하지 않는다. -> 매직넘버를 사용할 대보다 코드가 명확해 진다.


© 2021. All rights reserved.