JAVA 코딩테스트 문법

·2025년 6월 25일

배열 길이 VS 문자열 길이

타입길이 구하는 방법예시
배열 (int[], char[][], 등).lengtharr.length
문자열 (String).length() 메서드str.length()

char type vs String type 값 비교

🔹 grid가 char[][] 타입인 경우

grid[nxt_x][nxt_y] == '1'   // ✔️ char 리터럴은 작은 따옴표!

grid가 String[][] 타입인 경우

grid[nxt_x][nxt_y].equals("1")   // ✔️ 문자열은 equals로 비교!

배열 출력 (int[], int[][])

1. int[] 배열 출력

import java.util.Arrays;

int[] arr = {1, 2, 3};
System.out.println(Arrays.toString(arr));

🔸 출력 결과:

[1, 2, 3]

2. int[][] 출력

int[][] matrix = {{1, 2}, {3, 4}};
System.out.println(Arrays.deepToString(matrix));
→ 출력: [[1, 2], [3, 4]]

Queue 사용법

import java.util.LinkedList;
import java.util.Queue;

Queue<int[]> queue = new LinkedList<>();
queue.add(new int[]{0, 0});

🔹 Java Queue 주요 메서드 요약

메서드설명예시
add() / offer()큐에 원소 추가queue.add(5)
poll()큐 맨 앞 원소 꺼내고 제거int val = queue.poll()
peek()큐 맨 앞 원소 보기 (제거 ❌)`i

HashMap 사용법

🔹 1. 선언

Map<Integer, Boolean> map = new HashMap<>();
  • K = Key 타입 (Integer)
  • V = Value 타입 (Boolean)
  • Map은 인터페이스, HashMap은 구현체

🔹 2. 값 추가 (put())

map.put(3, true);  // Key: 3, Value: true
  • 기존 key가 있으면 값을 덮어씀

🔹 3. 값 조회 (get())

Boolean value = map.get(3);  // → true
  • 존재하지 않는 key면 null 반환

🔹 4. Key 존재 여부 (containsKey())

if (map.containsKey(3)) {
    // key가 존재할 때 처리
}
  • key만 검사, value는 검사하지 않음

🔹 5. 전체 순회

➤ key만 순회 (keySet())

for (Integer key : map.keySet()) {
    System.out.println(key + " -> " + map.get(key));
}

➤ key-value 쌍 순회 (entrySet())

for (Map.Entry<Integer, Boolean> entry : map.entrySet()) {
    System.out.println("key: " + entry.getKey() + ", value: " + entry.getValue());
}

🔹 6. 값 수정

map.put(3, false);  // 기존 key에 새 값 할당 (덮어쓰기)

🔹 7. 값 제거 (remove())

map.remove(3);  // key=3 삭제

📌 참고 메서드 요약표

메서드설명
put(key, value)값 추가 또는 덮어쓰기
get(key)key로 value 조회 (null 가능)
containsKey(key)key 존재 여부 확인
remove(key)해당 key 삭제
keySet()key만 모은 Set<K> 반환
entrySet()전체 key-value 쌍 반복에 사용

String 사용법

1. String.valueOf(int)

String.valueOf()는 int 같은 기본형(primitive type)을 문자열(String)으로 변환할 때 사용하는 메서드

int number = 123;
String str = String.valueOf(number);
System.out.println(str);  // 출력: "123"

2. StringBuilder.append()

🔹 역할

문자열을 효율적으로 이어붙이는 클래스입니다.
+ 연산보다 빠르며, 반복적인 문자열 연결에 유리합니다.

🔹 사용 예시

StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("World");

System.out.println(sb);  // 출력: Hello World

🔹 다양한 타입도 append 가능

sb.append(123);    // 숫자 추가 → "Hello World123"
sb.append(true);   // boolean 추가
sb.append('!');    // 문자 추가

3. String.equals()

🔹 역할

문자열의 내용을 비교할 때 사용합니다.
자바에서 == 연산자는 주소(참조)를 비교하기 때문에 문자열 비교엔 적절하지 않습니다.

🔹 사용 예시

String a = "hello";
String b = "hello";
String c = new String("hello");

System.out.println(a == b);        // true (같은 리터럴)
System.out.println(a == c);        // false (주소 다름)
System.out.println(a.equals(c));   // ✅ true (내용 같음)

4. String.substring(start, end)

🔹 역할

문자열의 일부분을 잘라서 반환합니다.

  • start: 포함
  • end: 미포함

🔹 사용 예시

String s = "abcdef";

System.out.println(s.substring(0, 3));  // "abc"
System.out.println(s.substring(2, 5));  // "cde"

🔹 끝까지 자르고 싶을 때

System.out.println(s.substring(3));  // "def"

🔄 요약 비교 표

메서드설명예시
StringBuilder.append()문자열 효율적 이어붙이기sb.append("abc");
String.equals()문자열 내용 비교"abc".equals("abc")
String.substring(a, b)부분 문자열 추출 (a 이상 b 미만)"abcdef".substring(1, 4)"bcd"

✍️ Tip: 문자열을 반복적으로 연결할 때는 StringBuilder,
내용 비교는 equals(),
부분 추출은 substring()을 쓰는 것이 자바의 정석입니다.


ArrayList 사용법

import java.util.ArrayList;
import java.util.List;

public class Main {
    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();

        list.add(1);       // 요소 추가
        list.add(2);
        list.add(3);

        System.out.println(list);  // [1, 2, 3]

        list.remove(1);    // 인덱스 1 제거 → [1, 3]
        list.set(0, 10);   // 인덱스 0의 값 변경 → [10, 3]
        System.out.println(list.get(1));  // 3
        System.out.println(list.size());  // 크기 확인 → 2
    }
}

Array와 List의 정렬

1.배열 정렬

1) 오름차순 정렬
Array.sort(arr);

String[] arr = {"banana", "apple", "cherry"};
Arrays.sort(arr);  // 오름차순 정렬
System.out.println(Arrays.toString(arr));  // [apple, banana, cherry]

2) 내림차순 정렬

Array.sort(arr,Collections.reverseOrder());

2.리스트 정렬
1) 오름차순 정렬
Collections.sort(list);

List<String> list = new ArrayList<>(List.of("banana", "apple", "cherry"));
Collections.sort(list);  // 오름차순 정렬
System.out.println(list);  // [apple, banana, cherry]

2) 내림차순 정렬
Collections.sort(list,Collections.reverseOrder());


📘 Java 문자열 & HashMap 핵심 정리

✅ 1. String.toCharArray()

String str = "hello";
char[] arr = str.toCharArray();  // ['h', 'e', 'l', 'l', 'o']
  • String → char[] 변환
  • 한 글자씩 꺼내서 반복하거나 정렬할 때 자주 사용
  • 읽기 전용 배열로 복사됨 (String은 불변이므로 안전하게 다룰 수 있음)

✅ 2. StringBuilder.toString()

StringBuilder sb = new StringBuilder();
sb.append("hello");
String result = sb.toString();  // "hello"
  • StringBuilder → String 변환
  • 문자열을 반복해서 붙일 때는 StringBuilder가 더 효율적
  • 최종 결과 문자열이 필요할 때 toString()으로 변환

✅ 3. HashMap<K, V> 기본 사용법

Map<String, Integer> map = new HashMap<>();
map.put("apple", 3);               // 삽입
int val = map.get("apple");        // 조회 → 3
  • put(key, value) → key에 value 저장
  • get(key) → key에 해당하는 value 반환

✅ 4. map.get(key).add(x) 패턴 (List를 값으로 저장할 때)

Map<String, List<String>> map = new HashMap<>();

map.putIfAbsent("fruit", new ArrayList<>());  // key가 없으면 리스트 생성
map.get("fruit").add("apple");                // 리스트에 값 추가
  • putIfAbsent()은 해당 key가 없을 때만 빈 리스트 생성 → defaultdict처럼 사용
  • get().add()로 리스트 내부에 원소 추가

getOrDefault(key, defaultValue)

Map<String, Integer> map = new HashMap<>();

System.out.println(map.getOrDefault("banana", 10));  // 10 (기본값 반환)
System.out.println(map);  // 여전히 비어 있음 → 실제로 저장되진 않음

🔍 동작 설명
key가 맵에 존재하면 → 해당 값을 반환

없으면 → defaultValue를 반환만 하고, 맵에는 넣지 않음!


profile
DevOps를 기반으로 한 클라우드, 알고리즘, 백엔드 관심있는 컴공생

0개의 댓글