🏁 서론사다리 게임... 발판 만들기... 빈 칸 없이 연결하기... 생각보다 너무 어렵다 😵💫 친구들과 내기할 때 종종 사용했던 익숙한 사다리 게임을, 직접 코드로 구현해보니 그 속에 생각보다 많은 고민이 숨어 있다는 걸 느꼈다.단순히 "랜덤하게 발판을 만들면 되겠지?" 하고 시작했지만, 연속으로 연결되면 안 되고, 모든 열은 최소한 한 번은 연결되어야 하고,게임 규칙도 자연스럽게 보장해야 한다는 점에서 꽤 까다로운 미션이었다.이번 회고에서는 사다리 게임을 구현하면서 마주한 고민들, 그에 대한 해결 방식, 그리고 리뷰어 피드백을 통해 배운 점들을 정리해보려 한다. 📚 이번 주 학습 내용https://github.com/izzy80/java-ladder-func-playground GitHub ..
Java
🏁 서론이번에 다시 한 번 느낀 건, 배우는 것만큼 복습이 정말 중요하다는 점이다. 특히 한 번 배운 개념은 꼭 내 것으로 만들기 위한 반복 학습과 이해가 필요하다. 2주차 자동차 경주에서 VO와 DTO 개념을 배웠을 때, 의미를 문자 그대로만 외우고 제대로 이해하지 못한 채 넘겼는데, 이번 미션에서도 그 부분이 다시 막히는 걸 보며 뼈저리게 느꼈다.다행히 이번엔 PR에서 이 부분에 대해 의견을 나눠보면서, 좀 더 깊이 이해할 수 있었다.앞으로는 배운 걸 그냥 넘기지 않고, 꼭 정리하고 복습하면서 완전히 내 것으로 만들자! 📚 이번 주 학습 내용https://github.com/izzy80/java-lotto-clean-playground GitHub - izzy80/java-lotto-clean-p..
🏁 서론이번에는 초간단 애플리케이션인 자동차 경주를 구현해 보았다. 총 4단계에 걸쳐 요구사항에 맞게 점진적으로 개발하고 리팩토링을 진행하였다. 이전에 진행한 계산기 프로젝트보다 난이도가 올라갔고, 특히 설계와 객체 분리에 대한 고민이 많았다. 그동안의 프로젝트는 ‘일단 동작하게 만드는 것’에 급급해 설계적인 부분에 깊이 다가가지 못했다는 점을 이번 스터디를 통해 확실히 느꼈다. 특히 계산기 프로젝트는 학습 순서나 리팩토링 타이밍이 다소 뒤죽박죽이었다면, 이번 미션은 단계별 학습 → 구현 → 리팩토링의 사이클을 비교적 체계적으로 따라가 보려 노력했다. 덕분에 마지막 리팩토링에서는 코드 구조를 전반적으로 개선하면서도 여러 시행착오를 겪었고, 그 과정을 통해 많은 걸 배울 수 있었다. 📚 이번 주 학..

🏁 서론요즘 취준만 하느라 뭔가 흐리멍덩하게 시간을 보내고 있다는 느낌이 들어서, 의식적으로 개발 리듬을 다시 잡고자 스터디를 시작했다. 이번에 참여하게 된 건 초록 스터디라는 곳인데, 단순히 과제를 제출하는 게 아니라 PR을 올리고, 테스트 코드를 작성하고, 클린 코드와 설계에 대한 피드백까지 주고받는 구조라는 점이 마음에 들어서 신청하게 되었다. https://cho-log.notion.site/1c81a5419760805fb2e9d99d53ab73f2 🌿 초록해듀오 | 함께 배우고 성장하는 개발 스터디 | Notion초록해듀오란?cho-log.notion.site 📚 이번 주 학습 내용https://github.com/izzy80/java-calculator-unit-playground/tr..
⏰문제https://school.programmers.co.kr/learn/courses/30/lessons/258712 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 선물을 직접 전하기 힘들 때 카카오톡 선물하기 기능을 이용해 축하 선물을 보낼 수 있습니다. 당신의 친구들이 이번 달까지 선물을 주고받은 기록을 바탕으로 다음 달에 누가 선물을 많이 받을지 예측하려고 합니다. - 두 사람 사이에 더 많은 선물을 준 사람이 선물을 받음 - 선물 기록이 없거나 주고받은 수가 같다면, 선물 지수가 더 큰 사람이 선물 지수가 더 작은 사람에게 받음 - 선물..

이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. Optional ⚝ T 타입 객체의 래퍼클래스 - Optional public final class Optional { private final T value; //T타입의 참조변수 ... } 1. 래퍼클래스? - 기본 자료타입(primitive type)을 객체로 다루기 위해서 사용하는 클래스 - T타입의 참조변수를 갖고 있음. - Integer, Long 등 2. Optional? Optional도 래퍼클래스인데 제네릭이 T라서 어떤 타입이든지 다 저장이 가능하다. => 모든 종류의 객체 저장 가능 (Null도 가능) 3. Optional 필요한 이유 Optional을 이용하면 Null을 간접적으로 처리 가능 ①..

이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 스트림의 연산 - 중간 연산 중간 연산 설명 Stream distinct() 중복을 제거 Stream filter(Predicate predicate) 조건에 안 맞는 요소 제외 Stream limit(long maxSize) 스트림의 일부를 잘라낸다 Stream skip(long n) 스트림의 일부를 건너뛴다. Stream peek(Consumer action) 스트림의 요소에 작업 수행 => 작업 중간에 잘 처리되었는지 확인할 때 많이 쓴다. Stream sorted() Stream sorted(Comparator

이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 스트림(Stream) - 다양한 데이터 소스를 표준화된 방법으로 다루기 위한 것 - 데이터 소스 = 컬렉션, 배열과 같이 여러 데이터를 저장한 것 표준화된 방법 = 컬렉션 프레임워크도 표준화된 방법으로 다루기 위해 정리한 것이긴 한데, 사실 실패함. List&Set / Map으로 나누어졌기때문이다. 그런데 jdk1.8부터 stream이 등장하면서 표준화하는 것을 성공했다. - 다양한 데이터소스(컬렉션, 배열 등)으로부터 stream을 만들 수 있다. 그리고 이 후 같은 방식으로 작업을 처리할 수 있다. 중간연산, 최종연산이 있는데 중간연산은 n번, 최종연산은 1번만 할 수 있다. - stream을 이용한 작업 1. ..

이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. 람다식(Lambda Expression) - 함수(메서드)를 간단한 `식(expression)`으로 표현하는 방법 - 익명 함수 (이름이 없는 함수, anonymous function) 반환타입과 이름을 지우고 화살표를 추가한다. - 함수와 메서드의 차이 근본적으로 동일. 함수는 일반적 용어. 메서드는 객체지향개념 용어 함수는 클래스에 독립적, 메서드는 클래스에 종속적 2-1. 람다식 작성하기 1. 메서드의 이름과 반환타입을 제거하고 `->`를 블록{} 앞에 추가한다. 2. 반환값이 있는 경우, 식이나 값만 적고 return문 생략 가능(끝에 ';' 안 붙임) 3. 매개변수의 타입이 추론 가능하면 생략 가능(대부분의..

이 글은 유튜브 '자바의 정석 - 기초편'을 보고 정리한 글입니다. 📂content 1. suspend(), resume(), stop() - 스레드의 실행을 일시정지, 재개, 완전정지 시킨다. void suspend() 스레드를 일시정지 시킨다. void resume() suspend()에 의해 일시정지된 스레드를 실행대기상태로 만든다. void stop() 스레드를 즉시 종료시킨다. 스레드를 생성하고 start()를 하면 실행대기 상태가 된다. 자신의 차례가 오면 실행했다가 stop()을 호출하거나 자신의 일을 다 하면 소멸된다. 그런데 실행 중에 suspend()를 호출하면 일시정지 상태가 되었다가, resume()을 호출하면 다시 줄을 서서 실행대기 상태가 된다. 그런데 위 메서드들은 사용권장하지..