CODING/스파르타 내일배움캠프 TIL

14_코트카타_Java 문법 종합반 1,2,3주차_24.12.31(화)

codingTrip 2024. 12. 31. 21:47

코트카타

16) x만큼 간격이 있는 n개의 숫자

나의 풀이

import java.util.*;

class Solution {
    public long[] solution(int x, int n) {
        long[] answer = {};
        ArrayList<Long> list = new ArrayList<>();

        for (int j = 1; j <= n; j++) {
            list.add(x*(long)j);
        }
        answer = list.stream().mapToLong(Long::longValue).toArray();

        return answer;
    }
}

사실 값을 구하는 것 자체는 할 수 있었는데

list의 개념에 대해 익숙하지 않아서

쉽지 않았다.

 

다른 분들의 풀이

import java.util.*;
class Solution {
    public static long[] solution(int x, int n) {
        long[] answer = new long[n];
        answer[0] = x;

        for (int i = 1; i < n; i++) {
            answer[i] = answer[i - 1] + x;
        }

        return answer;

    }
}

출처 :https://school.programmers.co.kr/learn/courses/30/lessons/12954/solution_groups?language=java

이렇게 할 걸... 조금 허무하다.

배열을 동적으로 생성하고 값 대입하는 방법을 사용하셨다.

아직 리스트까지 사용하지 않아도 되나보다.


Java 문법 종합반

1주차

래퍼클래스

- 유용한 기능? 메소드 사용가능

// 박싱 VS 언박싱

// 박싱
// Integer 래퍼 클래스 num 에 21 의 값을 저장
int number = 21;
// Integer num = new Integer(number); deprecated 지원 안함
Integer num = number;

// 언박싱
int n = num.intValue(); // 래퍼 클래스들은 intValue() 같은 언박싱 메서드들을 제공해줍니다.

 

문자와 문자열

문자는 기본형 / 문자열은 참조형

 

참조형

-> 복잡(별도) 주소 get

 

Stack : 정적

Heap : 동적 - '알 수 없을 때'

 

자동 형변환

좌     우

큰 = 작은

 

작은 타입 & 큰 타입 연산 시, 큰 타입으로 형변환 

=> 이거 알고리즘 문제에서 나왔었다.

2주차

대입연산자  ++, -- 주의하기

int a = 10;
int b = 10;
int val1 = ++a + b--; // a 는 연산전에 +1, b 는 연산후에 -1

 

if문과 switch문 차이점

if문 : 복합 조건 지원, 코드 중복

switch문 : 가독성

 

향상된 for문

for (int i : intArray) {
			System.out.print(i); // 01234
		}

배열의 경우에 사용하는데, 알고리즘 문제에도 나왔어서

자주 사용하며 익숙해져야겠다.

 

배열

//배열의 주소를 모두 같은 값으로 초기화
Arrays.fill(intArr,1);

 

String 기능 활용 (= char 배열)

메서드
응답값 타입
설명
length()
int
문자열의 길이를 반환한다.
charAt(int index)
char
문자열에서 해당 index의 문자를 반환한다.
substring(int from, int to)
String
문자열에서 해당 범위(from~to)에 있는 문자열을 반환한다. (to는 범위에 포함되지 않음)
equals(String str)
boolean
문자열의 내용이 같은지 확인한다. 같으면 결과는 true, 다르면 false가 된다.
toCharArray()
char[]
문자열을 문자배열(char[])로 변환해서 반환한다.
new String(char[] charArr)
String
문자배열(char[]) 을 받아서 String으로 복사해서 반환한다.

 

컬렉션

출처 : 스파르타 내일배움캠프 강의 자료

3주차

출처 : 스파르타 내일배움캠프 강의 자료

 

가변길이매개변수선언가능

void carSpeeds(double ... speeds) {
	for (double v : speeds) {
		System.out.println("v = " + v);
	}
}

 

오버로딩은 println()을 생각하면 편하다

 

Getter 와 Setter를 통해 raw data를 내보내지 않아도 된다.

 

상속은 부모가 큰 사람이라고 생각하면 안된다.

 

상속관계 : is - a (”~은 ~(이)다”)

포함관계 : has - a (”~은 ~을(를) 가지고 있다”)

 

부모 클래스로부터 상속받은 메서드의 내용을 재정의 하는 것을 오버라이딩이라고 합니다.

다형성이란 ‘여러 가지 형태를 가질 수 있는 능력’을 의미합니다.

클래스가 설계도라면 추상 클래스는 미완성된 설계도입니다.

 

인터페이스는 두 객체를 연결해주는 다리 역할을 해줍니다.