코드스테이츠 백엔드 부트캠프 6일차 [java 기초-2]

wish17·2022년 12월 22일
0
post-thumbnail

학습량이 많아짐에 따라 블로깅 방식에 변화를 주려고 한다.

앞으로는 배운 목록만 정리하고, 이해하기 힘들었거나 중요한 내용들 위주로 정리하고자 한다.

Section1

[Java] 기초

학습 내용:

연산자(Operator)

  • 산술 연산자
    • 증감연산자
    • 복합 대입 연산자
  • 비교 연산자
    • 대소 비교 연산자
    • 등가 비교 연산자
  • 논리 연산자
  • 연산자 우선순위

  • 조건 연산자

조건연산자

int num = true ? 7 : 11;
// 7출력

콘솔 입출력(I/O)

콘솔 출력

  • 출력하기 : System.out.print()
  • 출력하고 줄 바꾸기 : System.out.println()
  • 형식대로 출력하기 System.out.printf()

지시자

System.out.printf("%s%n", "Hello JAVA"); // 줄바꿈이 된다.
System.out.printf("%s%n", "Kim" + "Coding");
System.out.printf("%d%n", 3+6); 
System.out.printf("지금은 %s입니다", 2022 + "year"); // 자동 타입 변환이 일어난다.
System.out.printf("나는 %c%s입니다", '김', "코딩"); //여러 개의 인자를 넣을 수 있다.

제어문(Control Flow Statements) - 조건문

조건문

  • if 문
  • if...else문
  • Switch문
    • 변수가 어떤 값을 갖느냐에 따라 실행문이 선택
package com.company;

public class Main {
    static Scanner userInput = new Scanner(System.in);

    public static void main(String[] args) {
        String yourPosition = userInput.nextLine(); //입력받기

        switch(yourPosition){
            case "Senior" : // Senior일 경우 
                System.out.println("700만원");
                break;

            case "Junior" :  //Junior 또는 Manager일 경우
            case "Manager" : //실행문이 같으면 이렇게 작성 가능
                System.out.println("500만원");
                break;
            default:
                System.out.println("300만원");
                break;
        }
    }
}

cf) 자바 14에서는 ,로 여러 조건을 한 번에 처리 가능


Quiz

1~5번은 너무 쉬워서 문제 설명 등 스킵하고 간략하게 결과만 적어두겠다.

3번

나의 풀이

answer

4번

나의 풀이

answer

5번

ans

7번

수를 입력받아 3 그리고 5로 각각 나눈 뒤 나머지 값에 따라 알맞은 메시지를 리턴하라.

  • String 타입을 리턴해야 한다.
  • 3으로 나누어 떨어지는 경우, "Fizz"를 리턴해야 한다.
  • 5으로 나누어 떨어지는 경우, "Buzz"를 리턴해야 한다.
  • 3과 5로 모두 나누어 떨어지는 경우, "FizzBuzz"를 리턴해야 한다.
  • 3이나 5로 나누어 떨어지지 않는 경우, "No FizzBuzz"를 리턴해야 한다.

나의풀이

앞 조건이랑 뒷 조건이 겹칠 때 가장 작은조건을 위에 위치시키자.
ex) 숫자30을 대입한다고 할 때 fizzbuzz를 아래에 위치시키면 fizz가 출력 된다.

8번

두 개의 수와 기호를 입력받아 알맞게 계산한 값을 리턴하라.

  • 정해지지 않은 기호를 입력받았을때는 항상 0을 리턴하라.

나의 풀이

switch문 안에 return을 넣어서 오류가 나서 고생했다.
return을 넣으면 알아서 break걸리기 때문에 둘 중 하나만 쓰자.

ans

9번

특정 달(month)을 입력받아 각 달에 몇 일이 있는지 리턴하라.

  • 월 예시) 1월은 1, 2월은 2... 12월은 12다.
  • 2월 29일은 존재하지 않는다고 가정

나의풀이

ans

10번
요일을 입력받아 해당 요일의 다음 요일을 리턴하라.

  • String 타입을 리턴해야 한다.
  • 올바른 요일을 입력받은 경우, 다음 요일을 리턴해야 한다.

나의풀이

ans

노가다 문제다. 배열로 조금 더 간단하게 풀었다.

11번

2가지 조건을 모두 만족하는지 검사하라.

  • EitherEven: 적어도 하나의 수는 짝수이다.
  • LessThan9: 두 수 모두 9보다 작다.

나의풀이

package com.codestates.coplit; 

public class Solution { 
  boolean ans;
	public boolean isEitherEvenAndLessThan9(int num1, int num2) {
    if (num1%2 == 0 || num2%2 ==0) {
      if (num1 <9 && num2 <9)
      ans = true;
    }else {
      ans = false;
    }
    return ans;
	} 
}

ans

12번

점수를 입력받아 점수에 해당하는 등급을 리턴하라.

조건

  • char 타입을 리턴해야 한다.
  • (100 - 90) --> 'A'
  • (89 - 80) --> 'B'
  • (79 - 70) --> 'C'
  • (69 - 60) --> 'D'
  • (59 - 0) --> 'F'
  • 100을 초과하거나 0 미만이라면 문자 'X'를 리턴하라

나의풀이

package com.codestates.coplit; 

public class Solution { 
  char ans;
	public char convertScoreToGrade(int score) {
    if ( score >100 || score<0) {
      ans = 'X';
    }else if (score >= 90) {
      ans = 'A';
    }else if (score >= 80) {
      ans = 'B';
    }else if (score >= 70) {
      ans = 'C';
    }else if (score >= 60) {
      ans = 'D';
    }else {
      ans = 'F';
    }
    return ans;
	} 
}

ans

  1. 점수를 입력받아 점수에 해당하는 등급을 리턴하라.
  • String 타입을 리턴해야 한다.
    각 등급의 최저 점수는 아래와 같다. ("F"의 경우 최대 점수를 표기)

  • 90 이상 --> "A"

  • 80 이상 --> "B"

  • 70 이상 --> "C"

  • 60 이상 --> "D"

  • 60 미만 --> "F"

  • 100을 초과하거나 0 미만인 경우, 문자열 "INVALID SCORE"를 리턴하라.

  • 각 등급의 최고 점수보다 7점 이하인 경우, 등급과 함께 "-"를 리턴해야 한다. (단, 93점의 경우에는 A를 리턴해야 함.)

  • 각 등급의 최저 점수보다 8점 이상인 경우, 등급과 함께 "+"를 리턴해야 한다.

  • F+ 와 F- 는 존재하지 않는다.

나의풀이

package com.codestates.coplit; 

public class Solution { 
	public String convertScoreToGradeWithPlusAndMinus(int score) {
    // TODO:
    String grade;

    if (score >100 || score<0) {
    return "INVALID SCORE";
    }

    if (score == 100) {
      return "A+";
    }

    if (score>=90) {
    grade = "A";
    } else if (score>=80) {
    grade = "B";
    } else if (score>=70) {
    grade = "C";
    } else if (score>=60) {
    grade = "D";
    } else {
    grade = "F";
    }

    if (!grade.equals("F")) {
      int extra = score % 10;
      if (extra>=8) {
        grade = grade + "+";
      } else if (extra<=2) {
        grade = grade + "-";
      }
    }
    return grade;
	} 
}

ans

14번

삼각형의 세 변을 입력받아 직각삼각형(pythagorean)인지 여부를 리턴하라.

  • 삼각형의 각 세 변은 무작위로 입력된다.
  • arr.sort 사용은 금지
  • 제곱을 구할 때는 입력으로 주어지는 변수를 그대로 사용해야 한다.
package com.codestates.coplit; 

public class Solution { 
  boolean ans;
	public boolean isPythagorean(int side1, int side2, int side3) {
     if(side1 > side2 && side1 > side3){
        if((side2*side2)+(side3*side3) == side1*side1){
          ans = true;
        }
     }
    if(side2 > side1 && side2 > side3){
        if((side3*side3)+(side1*side1) == side2*side2){
          ans = true;
        }
     }
    if(side3 > side1 && side3 > side2){
        if((side1*side1)+(side2*side2) == side3*side3){
          ans = true;
        }
     }
    return ans;
  } 
}

ans

15번
두 개의 boolean 값을 입력받아 or 연산을 적용한 것과 같은 결과를 리턴하라.

  • || 연산자 사용은 금지
package com.codestates.coplit; 

public class Solution { 
	public boolean or(boolean expression1, boolean expression2) {
    // TODO:
    boolean result = true;
    if(!expression1 && !expression2) {
      result = false;
    }
    return result;
	} 
}

ans

16번

시, 분, 초를 입력받아 1초를 더한 결과값을 특정 형태의 메시지로 리턴하라.

  • String 타입을 리턴해야 한다.
  • 1초 뒤에 {hour}시 {minute}분 {second}초 입니다 형식으로 리턴하라.
package com.codestates.coplit; 

public class Solution { 
	public String addOneSecond(int hour, int minute, int second) {
    // TODO:
    second++;
    if(second>59){
      minute++;
      second-=60;
      if(minute>59){
        hour++;
        minute-=60;
        if(hour>23){
          hour-=24;
        }
      }    
    }
    String str = String.format("1초 뒤에 %d시 %d분 %d초 입니다", hour, minute, second);
    return str;
	} 
}

ans

package com.codestates.coplit; 

public class Solution { 
	public String addOneSecond(int hour, int minute, int second) {
    if (second == 59) {
			minute += 1;
			second = 0;
		} else {
			second += 1;
		}

		if (minute == 60) {
			hour += 1;
			minute = 0;
		}

		if (hour == 24) {
			hour = 0;
		}

		return "1초 뒤에 " + hour + "시 " + minute + "분 " + second + "초 입니다";
	} 
}

오늘의 정리

  • 지시자, 조건연산자 활용성이 좋아보이니 많이 연습하자.
  • 지역변수를 메소드 내부에서 선언하면 초기값을 할당해 줘야한다.
    (String은 예외, String은 참조변수라 주소값이 할당되지 않아서..)

0개의 댓글