본문 바로가기

전체 글140

13. 나이순 정렬, 파일명 정렬 나이순 정렬 members.sort(Comparator.comparingInt(m -> m.age));리스트 정렬 : 파이썬의 람다 표현식과 비슷 : m -> m.age : Member 객체 m 하나 받아서 그 안의 age 반환 : Comparator는 “두 객체를 비교”하는 함수 : comparingInt()는 그걸 간단하게 한 객체에서 비교 기준 숫자만 꺼냄 자바의 기본 정렬은 안정 정렬이라 입력 순서 그대로 유지 : 즉, 나이(age)가 같으면 순서를 그대로 유지 : 만약 age를 먼저 비교하고 같은 경우엔 이름 기준으로 정렬하고 싶다면? : .thenComparing()members.sort( Comparator.comparingInt(m -> m.age) .then.. 2025. 10. 27.
12. 캐시, 수강신청 캐시 LRU 캐시를 구현할 때 큐 + 리스트 기능을 모두 집어넣어서 쓰고 싶음 : 이때는 아래와 같이 LinkedList로 선언LinkedList cache = new LinkedList();앞에서 제거(removeFirst) : 뒤에 추가(addLast) : 중간에서 특정 요소 제거(remove(Object)) : 요소 포함 여부 검사(contains) : 이 중 중간 요소 제거(remove(Object))는 Queue 인터페이스에는 없고, LinkedList에는 있음 : 또한, Queue에서의 remove() 메서드는 "맨 앞 원소 제거"용임 최종코드import java.util.*;class Solution { // 문자열 배열 : String[] public int solution(i.. 2025. 10. 27.
11. 요세푸스 문제, 에디터 (자료구조) 요세푸스 문제 자바에는 deque 대신 Queue (또는 LinkedList)를 쓰면 거의 똑같이 동작 : 자바의 자료구조 설계 방식은 LinkedList가 Queue 기능을 구현한 클래스임 : 즉, Queue는 "인터페이스"(설계도)이며, LinkedList는 “구현체”(실제 작동하는 클래스)임 Queue q = new LinkedList();// 좌측 : “큐처럼 쓸 거야” (사용 규칙은 FIFO 구조)// 우측 : “큐 기능을 하는 자료구조를 LinkedList로 구현할게”파이썬자바q.popleft()q.remove()q.append(x)q.add(x)order.append(...)order.add(...) 최종코드import java.util.*;public class Main { publ.. 2025. 10. 26.
10. 빙고, 다트게임 빙고 자바에는 인덱스 (i, j)를 저장해놓을 튜플같은 자료형이 없음 : 2차원 배열을 쓰는게 일반적idxMap[val][0] = i; // 행 인덱스idxMap[val][1] = j; // 열 인덱스파이썬에서 썼던 for문 문법은 아래와 같이 자바에서도 쓸 수 있음// 파이썬의 for문for num in host:// 자바의 for문for (int num : host) 최종코드import java.util.*;public class Main { static int[][] matrix = new int[5][5]; static int[] colCheck = new int[5]; static int[] rowCheck = new int[5]; static int diag1 = 0; .. 2025. 10. 26.
9. 콜라츠의 추측, 더하기 사이클 지금까지 해왔던 파이썬 코드 JAVA로 풀어보기 일단 자바 프로그램은 항상 아래 틀 안에서 시작함을 이해하자public class Main { public static void main(String[] args) { // 코드가 여기서 실행됨 }}public class Main : 프로그램의 이름(클래스 이름) : 한 파일에 한 개의 public 클래스만 존재해야함public static void main(String[] args) : 자바 프로그램의 시작점 (C언어의 int main()과 같은 역할)public class Main { public static void main(String[] args) { SubClass sc = new SubClass(); .. 2025. 10. 25.
8. JAVA로 TODO리스트 만들기 파이썬과의 비교? 클래스와 객체파이썬의 class TodoList: → 자바에서는 public class TodoList { ... }자바는 모든 걸 명확히 타입을 지정해야 함 : self.works = [] (파이썬) → private ArrayList> works; (자바) : 즉, 할 일 목록이 어떤 자료형인지 미리 딱 정해야함생성자파이썬 : def __init__(self): self.works = []자바 : public TodoList() { this.works = new ArrayList(); } : __init__ 대신 클래스 이름과 동일한 메서드가 생성자가 됨메서드파이썬 : def add_works(self, work)자바 : public void addWorks(Map work) : .. 2025. 9. 29.
7. 자바 날개 달기 (패키지, 접근 제어자, 스태틱, 예외 처리, 스레드, ...) 패키지 개념비슷한 성격의 클래스들을 묶어 정리하는 자바의 디렉터리 개념 : 클래스 분류, 이름 충돌 방지, 유지보수성 향상 패키지 만들기package 키워드 사용 : 아래와 같이 HousePark, HouseKim 등의 클래스들이 있다면 house라는 패키지로 분류하면 편리할 것// house/HouseKim.javapackage house;public class HouseKim {}// house/HousePark.javapackage house;public class HousePark {} 파일 상단에 package 패키지명; 선언 : 소문자로 작성디렉터리 구조와 패키지명이 일치해야 함 (house/HouseKim.java)서브 패키지기본 패키지 안의 하위 패키지 → . 으로 구분// house/p.. 2025. 9. 28.
6. 자바의 입출력 (콘솔, 파일) 콘솔 입출력 콘솔이란사용자 입력과 출력이 이루어지는 창 : 환경에 따라 달라짐 (IntelliJ 실행 창, Windows 명령 프롬프트 등)- 콘솔 입력 : 키보드로 입력 (→ System.in)- 콘솔 출력 : 화면에 출력 (→ System.out) InputStream바이트 단위 입력import java.io.IOException;import java.io.InputStream;public class Sample { public static void main(String[] args) throws IOException { InputStream in = System.in; int a = in.read(); // 1byte 읽기 → int(아스키코드값)로 저장 .. 2025. 9. 28.
5. 객체지향 프로그래밍 (클래스, 메서드, 상속, 생성자, ...) 객체지향 프로그래밍이란? 정의, 개념객체지향 프로그래밍(OOP)은 프로그램을 함수와 전역 변수만으로 작성하는 대신, 객체 단위로 나누어 설계하는 방식 : 객체는 클래스(class)라는 설계도를 바탕으로 생성되며, 클래스 안에는 변수(상태)와 메서드(동작)가 함께 정의됨 : 목표는 코드의 재사용성과 유지보수성 향상 전역 변수(static 변수) 방식한 클래스에서 static 변수를 사용하면 모든 인스턴스가 같은 값을 공유 : 따라서 계산기 1개만 있을 때는 문제가 없지만, 여러 개의 계산기를 독립적으로 사용하기는 어려움class Calculator { static int result = 0; static int add(int num) { result += num; re.. 2025. 9. 28.
14. 명령과 부탁하기 동작eat(~다 / do)(목적어) 을/를 대상mother(은/는/이/가)(가능성)willcanwouldcould상태beis, am, are명사/형용사진행중인 상태당하는 상태(pp) 경험강조(경험을 가지다)have동작(pp)상태(been)꾸며주는 단어진행중인 단어당하는 단어 명령을 할 때는 대상을 이야기하지 않고 : 즉시 동작 or 상태가 나오면 됨 : 만약 please가 앞에 붙는다면 부탁이되는 것(Please) Give me(Please) Be polite부정일땐?동작과 상태 앞에 Don't이 붙게됨Don't give meDon't be afraid 2025. 9. 28.
4. 제어문 이해하기 (if문, switch-case, while, for) if문 정의조건을 판단해 상황에 따라 다른 코드를 실행할 때 사용하는 제어문 : 조건이 참(true)일 때 if 블록 실행, 거짓(false)일 때 else 블록 실행기본 구조if (조건문) { 수행할 문장들...} else { 수행할 문장들...}→ 조건문이 참이면 if 블록 실행, 거짓이면 else 블록 실행 비교 연산자조건문에서 자주 사용하는 연산자x x가 y보다 작다x > yx가 y보다 크다x == yx와 y가 같다x != yx와 y가 같지 않다x >= yx가 y보다 크거나 같다x x가 y보다 작거나 같다int x = 3;int y = 2;System.out.println(x > y); // trueSystem.out.println(x 논리 연산자 (and, or, not)x .. 2025. 9. 27.
3. 자바의 기초 - 자료형 (숫자, 불, 문자, 문자열, 리스트, ...) 숫자 정수사용 가능한 정수형 : int, long표현 범위 - int : –2,147,483,648 ~ 2,147,483,647 - long : –9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807byte, short도 존재하지만 잘 쓰이지 않음 - byte : –128 ~ 127 - short : –32,768 ~ 32,767long 타입 상수 : 큰 정수를 대입할 때는 끝에 L 또는 l 붙여야 함 예 : long count = 8764827384923849L;실수사용 가능한 실수형 : float, double표현 범위 - float : 약 ±3.4 × 10³⁸ - double : 약 ±1.7 × 10³⁰⁸기본 실수형은 doublefloat 변수에 상수를 .. 2025. 9. 27.