오늘부터 다시 주특기 언어 주차로 돌아가서 자바 공부를 합니다. 다음주까지 알고리즘 문제 28개를 풀고 과제를 제출하고 알고리즘 시험을 통과해야 합니다. 새로운 조로 배정이 되었는데 저는 자바 걷기반을 선택했습니다. 시간이 생각보다 훅훅 지나가네요. 

 

🎼오늘의 노래 서인국 애기야

 

사랑스러운 자바

 

IntelliJ 단축키 모음

  • 코드 라인 복사해서 다음 라인에 붙이기: Command + D
  • System.out.println : sout
  • 라인 삭제: Command + Backspace
  • Column selection mode (블럭단위 편집, 세로편집 모드 전환) : Command + Shift + 8
  • 파일 찾기: Command + Shift + O
  • 클릭한 메서드로 이동: Command + 클릭
  • 이전/다음 시점으로 이동: Command + Option + 화살표(좌, 우)
  • 단어 단위 이동: Option + 화살표(좌, 우)
  • 파라미터 변수 확인: Command + P
  • 변수 추출: Command + Option + V
  • 이전 클래스 확인: Command + E
  • 해당 테스트 실행: Control + Shift + R
  • 해당 테스트 디버깅 실행: Control + Shift + R
  • 최근 실행했던 테스트 실행: Control + R
  • 최근 실행했던 테스트 디버깅 실행: Control + D
  • 해당 코드 라인 마치고 다음 라인으로 이동: Command + Shift + Enter
  • 테스트 클래스 생성/이동: Command + Shift + T
  • import 하기: Option + Enter
  • 쓰지 않는 import 정리 하기: Control + Option + O
  • 자동 완성: Control + Space
  • 메서드 생성 및 수정: Option + Enter
  • 주석: Command + /
  • 문법 단위로 코드 이동: Command + Shift + 화살표(상, 하)
  • 한줄 단위로 코드 이동: Option + Shift + 화살표(상, 하)
  • 생성자/Getter/Setter/toString 만들기: Control + Enter
  • 해당 메서드를 사용하는 곳 조회: Option + F7

 

프로그래머스 문제 Java

3.  가운데 글자 구하기

길이를 구해서 중간 글자를 출력 합니다.

 

  1. .length() 메소드를 이용해서 String s의 길이 값을 구한다.
  2. int length = s.length();
  3. 2로 나눈 값의 나머지가 0인 경우는 짝수 -> (length%2==0)
  4. 짝수인 경우, 중간 문자 2개가 answer가 된다. int 이기 때문에 자동으로 소수점 이하 값은 없애버림
  5. 예시. String s = cute; int length =4; 4%2 ==0; 짝수
  6. .charAt() 메소드를 이용해서 x 번째 문자의 값을 구한다
  7. 짝수인 경우 가운데 두글자
  8. 홀수인 경우 가운데 한글자
public class Ex2_1 {
    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        String answer = "";
        int length = s.length();
        if(length%2==0){
            answer+= s.charAt(length/2-1);
            answer+= s.charAt(length/2);
        }else{
            answer+= s.charAt(length/2);
        }
        System.out.println(answer);


    }
}

제출하고 통과는 했으나....

한줄 짜리 코드로도 가능했던 것이었던 것이었습니다.

substring()

.substring 메소드를 이용하는 방법

.substring(start letter, end letter)

시작하는 글자, 끝나는 글자 순번을 넣어주면 됩니다.

.substring(start letter)

시작하는 글자 부터 끝까지 출력합니다. 

 

4. 정수의 합 구하기

a와 b 사이의 숫자를 모두 더한 값을 구하는 문제입니다.

 

  1. a와 b 중 큰 값을 long max, 작은 값을 long min 으로 정의한다.
  2. for문의 초기값을 min, 최대값을 max, 증가연산자 일 때 합을 구한다
public class Ex2_1 {
    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        long answer =0;
        long min = Math.min(a,b);
        long max = Math.max(a,b);
        for (long x=min; x<=max;x++){
            answer += x;
        }
        System.out.print(answer);


    }
}

이렇게 열심히 했는데....

sumAtoB라는 함수가 있었습니다..

sumAtoB() 는 A와 B 사이의 값을 구합니다. 

sumAtoB()

 

5. 문자열을 정수로 전환하기

public class Ex2_1 {
    public static void main(String[] args) {
    Scanner scanner = new Scanner(System.in);
        int answer = 0;
        String s = scanner.nextLine();
        answer = Integer.parseInt(s);
        System.out.println(answer);

    }
}

되게 간단하다고 생각을 했었습니다만....

마! 이게 알고리즘이다

 

6. 없는 숫자 더하기

말그대로 없는 숫자를 더해야 합니다.

 

function solution(numbers) {
  let answer = 0;
   
  for(let i = 0; i <= 9; i++) {
    if(!numbers.includes(i)) answer += i;
  }
   
  return answer;
}

0부터 9까지 숫자가 있는데 없으면 그 수를 더한다.

!변수.includes() 메소드를 사용한다. ! == not

 

+ Recent posts