자바
-
😒개요 기존 코드가 롬복의 @Builder를 사용하여 빌더 패턴을 구현했는데, 사용하다 보니 필드 값이 많아 질 때, 대충 맞겠지 하면서 값을 입력했더니, 개발하다 보니 Builder를 통해 인스턴스 생성시, 나중에 null이 들어가는 부분이 계속 생겨났다. 그냥 내 실수려니 하고 넘어가다가 반복되니, 이건 코드의 문제다 싶어서, 객체 초기화 할 때, 간단하게 필수 값을 검증해야겠다! 라는 생각부터 시작되게 되었다. 이런 식의 코드처럼.. title을 빼먹는다거나… 👍해결방법 1. 직접 Null 체크 가장 직접적인 방법은 Null체크 하는 메서드를 실제로 만들어서 체크하는 방법이다. class Post { private final String title; private final String conten..
[Spring] 롬복을 사용한 Builder 패턴 Null체크 하며 사용하기😒개요 기존 코드가 롬복의 @Builder를 사용하여 빌더 패턴을 구현했는데, 사용하다 보니 필드 값이 많아 질 때, 대충 맞겠지 하면서 값을 입력했더니, 개발하다 보니 Builder를 통해 인스턴스 생성시, 나중에 null이 들어가는 부분이 계속 생겨났다. 그냥 내 실수려니 하고 넘어가다가 반복되니, 이건 코드의 문제다 싶어서, 객체 초기화 할 때, 간단하게 필수 값을 검증해야겠다! 라는 생각부터 시작되게 되었다. 이런 식의 코드처럼.. title을 빼먹는다거나… 👍해결방법 1. 직접 Null 체크 가장 직접적인 방법은 Null체크 하는 메서드를 실제로 만들어서 체크하는 방법이다. class Post { private final String title; private final String conten..
2023.11.10 -
😊개요 한창 프로젝트를 하며 스프링과 객체지향을 접하고 활용 했을 때, 의존성에 관한 고민을 매우 많이 했었다. 그러던 도중 유튜브에서 우아한 객체지향 by 조영호님의 세미나를 듣고, 그동안 프로젝트를 진행하면서 이게맞나? 라고 생각했던 실타래들이 하나하나 풀리게 되면서 입을 벌린 상태로 보며 정리했었던 적이 있다. 그때의 내용을 곱씹으면서 다시 정리 해보자고 생각했다. 다음과 같이 변경하게되면 기존에 적었던 메서드들이 모두 컴파일에러를 띄울것이다. 연관관계로 참조했던 것들이 객체를 끊어버리게 되니깐 Entity내부에서 구현했던 연관관계 객체들에서 error를 반환한다. Id로 참조하는 공통 로직을 객체를 새로 생성해 하나에 몰아 넣는다. 🎈과연 이렇게 하는 것이 좋은 변경일까? 객체 지향은 여러객체를 ..
우아한 객체지향 [우아한테크세미나] 정리 5😊개요 한창 프로젝트를 하며 스프링과 객체지향을 접하고 활용 했을 때, 의존성에 관한 고민을 매우 많이 했었다. 그러던 도중 유튜브에서 우아한 객체지향 by 조영호님의 세미나를 듣고, 그동안 프로젝트를 진행하면서 이게맞나? 라고 생각했던 실타래들이 하나하나 풀리게 되면서 입을 벌린 상태로 보며 정리했었던 적이 있다. 그때의 내용을 곱씹으면서 다시 정리 해보자고 생각했다. 다음과 같이 변경하게되면 기존에 적었던 메서드들이 모두 컴파일에러를 띄울것이다. 연관관계로 참조했던 것들이 객체를 끊어버리게 되니깐 Entity내부에서 구현했던 연관관계 객체들에서 error를 반환한다. Id로 참조하는 공통 로직을 객체를 새로 생성해 하나에 몰아 넣는다. 🎈과연 이렇게 하는 것이 좋은 변경일까? 객체 지향은 여러객체를 ..
2023.11.08 -
😊개요 한창 프로젝트를 하며 스프링과 객체지향을 접하고 활용 했을 때, 의존성에 관한 고민을 매우 많이 했었다. 그러던 도중 유튜브에서 우아한 객체지향 by 조영호님의 세미나를 듣고, 그동안 프로젝트를 진행하면서 이게맞나? 라고 생각했던 실타래들이 하나하나 풀리게 되면서 입을 벌린 상태로 보며 정리했었던 적이 있다. 그때의 내용을 곱씹으면서 다시 정리 해보자고 생각했다. 🎈설계 개선하기 설계를 진화시키기 위한 출발점 코드 작성 후 의존성 관점에서 설계 검토 → shop과 order에서 사이클이 발생한다. 🎈해결 1. 중간 객체를 이용한 의존성 사이클 끊기 어떻게 보면 DIP의 변형이라 볼 수 있다. 의존성을 끊고 장바구니에서도 OptionGroup과 Option을 활용할 수 있으므로 재사용성이 증가한다...
우아한 객체지향 [우아한테크세미나] 정리 4😊개요 한창 프로젝트를 하며 스프링과 객체지향을 접하고 활용 했을 때, 의존성에 관한 고민을 매우 많이 했었다. 그러던 도중 유튜브에서 우아한 객체지향 by 조영호님의 세미나를 듣고, 그동안 프로젝트를 진행하면서 이게맞나? 라고 생각했던 실타래들이 하나하나 풀리게 되면서 입을 벌린 상태로 보며 정리했었던 적이 있다. 그때의 내용을 곱씹으면서 다시 정리 해보자고 생각했다. 🎈설계 개선하기 설계를 진화시키기 위한 출발점 코드 작성 후 의존성 관점에서 설계 검토 → shop과 order에서 사이클이 발생한다. 🎈해결 1. 중간 객체를 이용한 의존성 사이클 끊기 어떻게 보면 DIP의 변형이라 볼 수 있다. 의존성을 끊고 장바구니에서도 OptionGroup과 Option을 활용할 수 있으므로 재사용성이 증가한다...
2023.11.08 -
😊개요 한창 프로젝트를 하며 스프링과 객체지향을 접하고 활용 했을 때, 의존성에 관한 고민을 매우 많이 했었다. 그러던 도중 유튜브에서 우아한 객체지향 by 조영호님의 세미나를 듣고, 그동안 프로젝트를 진행하면서 이게맞나? 라고 생각했던 실타래들이 하나하나 풀리게 되면서 입을 벌린 상태로 보며 정리했었던 적이 있다. 그때의 내용을 곱씹으면서 다시 정리 해보자고 생각했다. 🎈관계의 종류 결정하기 연관관계 → 영구적인 탐색구조가 필요하다면 연관관계로 잡는다. 위와 같은관계에서 만약 Order랑 Shop이랑 굉장히 빈번하게 호출이 발생한다면 연관관계로 잡는것이 좋다. 의존관계 → 협력을 위해 일시적으로 필요한 의존성(파라미터, 리턴타입, 지역변수) → 연관관계는 탐색 가능성을 말하며 두 객체사이에 협력이 필요..
우아한 객체지향 [우아한테크세미나] 정리 3😊개요 한창 프로젝트를 하며 스프링과 객체지향을 접하고 활용 했을 때, 의존성에 관한 고민을 매우 많이 했었다. 그러던 도중 유튜브에서 우아한 객체지향 by 조영호님의 세미나를 듣고, 그동안 프로젝트를 진행하면서 이게맞나? 라고 생각했던 실타래들이 하나하나 풀리게 되면서 입을 벌린 상태로 보며 정리했었던 적이 있다. 그때의 내용을 곱씹으면서 다시 정리 해보자고 생각했다. 🎈관계의 종류 결정하기 연관관계 → 영구적인 탐색구조가 필요하다면 연관관계로 잡는다. 위와 같은관계에서 만약 Order랑 Shop이랑 굉장히 빈번하게 호출이 발생한다면 연관관계로 잡는것이 좋다. 의존관계 → 협력을 위해 일시적으로 필요한 의존성(파라미터, 리턴타입, 지역변수) → 연관관계는 탐색 가능성을 말하며 두 객체사이에 협력이 필요..
2023.11.07 -
😊개요 한창 프로젝트를 하며 스프링과 객체지향을 접하고 활용 했을 때, 의존성에 관한 고민을 매우 많이 했었다. 그러던 도중 유튜브에서 우아한 객체지향 by 조영호님의 세미나를 듣고, 그동안 프로젝트를 진행하면서 이게맞나? 라고 생각했던 실타래들이 하나하나 풀리게 되면서 입을 벌린 상태로 보며 정리했었던 적이 있다. 그때의 내용을 곱씹으면서 다시 정리 해보자고 생각했다. 🎈예제(배달 앱) 🎈문제점 사용자가 메뉴를 고름 → 장바구니에 담음 → 이 때 업소에서 해당 메뉴를 변경시킨다. 이 때,가게의 메뉴와 장바구니에 담긴 내용이 다르므로 Validation Check가 필요하다. 🎈Valication 체크 위와 같은 관계에는 방향성이 필요하다. 방향이 잡히면 이는 곧 의존성의 방향이된다. 참고영상
우아한 객체지향 [우아한테크세미나] 정리 2😊개요 한창 프로젝트를 하며 스프링과 객체지향을 접하고 활용 했을 때, 의존성에 관한 고민을 매우 많이 했었다. 그러던 도중 유튜브에서 우아한 객체지향 by 조영호님의 세미나를 듣고, 그동안 프로젝트를 진행하면서 이게맞나? 라고 생각했던 실타래들이 하나하나 풀리게 되면서 입을 벌린 상태로 보며 정리했었던 적이 있다. 그때의 내용을 곱씹으면서 다시 정리 해보자고 생각했다. 🎈예제(배달 앱) 🎈문제점 사용자가 메뉴를 고름 → 장바구니에 담음 → 이 때 업소에서 해당 메뉴를 변경시킨다. 이 때,가게의 메뉴와 장바구니에 담긴 내용이 다르므로 Validation Check가 필요하다. 🎈Valication 체크 위와 같은 관계에는 방향성이 필요하다. 방향이 잡히면 이는 곧 의존성의 방향이된다. 참고영상
2023.11.07 -
😊개요 한창 프로젝트를 하며 스프링과 객체지향을 접하고 활용 했을 때, 의존성에 관한 고민을 매우 많이 했었다. 그러던 도중 유튜브에서 우아한 객체지향 by 조영호님의 세미나를 듣고, 그동안 프로젝트를 진행하면서 이게맞나? 라고 생각했던 실타래들이 하나하나 풀리게 되면서 입을 벌린 상태로 보며 정리했었던 적이 있다. 그때의 내용을 곱씹으면서 다시 정리 해보자고 생각했다. 🎈의존성을 이용해 설계 진화시키기 설계 → 코드를 어떻게 배치할 것인가? → 핵심은 변경에 초점을 맞춘다. 같이변경되는 코드를 같이 넣고 변경되지 않는코드를 따로 넣어야 한다. 의존성 의존성이 있다라는 것은 위의 그림에서 B가 변경될 때 A도 함께 변경될 가능성이 있는 것을 말한다. 하지만 꼭 영향을 주는 것이 아니라 가능성이 있는 것을..
우아한 객체지향 [우아한테크세미나] 정리 1😊개요 한창 프로젝트를 하며 스프링과 객체지향을 접하고 활용 했을 때, 의존성에 관한 고민을 매우 많이 했었다. 그러던 도중 유튜브에서 우아한 객체지향 by 조영호님의 세미나를 듣고, 그동안 프로젝트를 진행하면서 이게맞나? 라고 생각했던 실타래들이 하나하나 풀리게 되면서 입을 벌린 상태로 보며 정리했었던 적이 있다. 그때의 내용을 곱씹으면서 다시 정리 해보자고 생각했다. 🎈의존성을 이용해 설계 진화시키기 설계 → 코드를 어떻게 배치할 것인가? → 핵심은 변경에 초점을 맞춘다. 같이변경되는 코드를 같이 넣고 변경되지 않는코드를 따로 넣어야 한다. 의존성 의존성이 있다라는 것은 위의 그림에서 B가 변경될 때 A도 함께 변경될 가능성이 있는 것을 말한다. 하지만 꼭 영향을 주는 것이 아니라 가능성이 있는 것을..
2023.11.07 -
🔗링크 2668 숫자고르기 Gold5 ⚠️문제 세로 두 줄, 가로로 N개의 칸으로 이루어진 표가 있다. 첫째 줄의 각 칸에는 정수 1, 2, …, N이 차례대로 들어 있고 둘째 줄의 각 칸에는 1이상 N이하인 정수가 들어 있다. 첫째 줄에서 숫자를 적절히 뽑으면, 그 뽑힌 정수들이 이루는 집합과, 뽑힌 정수들의 바로 밑의 둘째 줄에 들어있는 정수들이 이루는 집합이 일치한다. 이러한 조건을 만족시키도록 정수들을 뽑되, 최대로 많이 뽑는 방법을 찾는 프로그램을 작성하시오. 예를 들어, N=7인 경우 아래와 같이 표가 주어졌다고 하자. 이 경우에는 첫째 줄에서 1, 3, 5를 뽑는 것이 답이다. 첫째 줄의 1, 3, 5밑에는 각각 3, 1, 5가 있으며 두 집합은 일치한다. 이때 집합의 크기는 3이다. 만약 ..
백준 2668 숫자고르기[JAVA]🔗링크 2668 숫자고르기 Gold5 ⚠️문제 세로 두 줄, 가로로 N개의 칸으로 이루어진 표가 있다. 첫째 줄의 각 칸에는 정수 1, 2, …, N이 차례대로 들어 있고 둘째 줄의 각 칸에는 1이상 N이하인 정수가 들어 있다. 첫째 줄에서 숫자를 적절히 뽑으면, 그 뽑힌 정수들이 이루는 집합과, 뽑힌 정수들의 바로 밑의 둘째 줄에 들어있는 정수들이 이루는 집합이 일치한다. 이러한 조건을 만족시키도록 정수들을 뽑되, 최대로 많이 뽑는 방법을 찾는 프로그램을 작성하시오. 예를 들어, N=7인 경우 아래와 같이 표가 주어졌다고 하자. 이 경우에는 첫째 줄에서 1, 3, 5를 뽑는 것이 답이다. 첫째 줄의 1, 3, 5밑에는 각각 3, 1, 5가 있으며 두 집합은 일치한다. 이때 집합의 크기는 3이다. 만약 ..
2023.09.26 -
평소에 조금씩 자바 공부를 하고 있는데 기초적인 부분에 대해 너무 많이 모른다는 생각을 자주 했다. 그러던 와중 커리어리에 올라와 있는 조서희님의 주니어 자바 개발자를 위한 100가지 질문이라는 글을 보았다. 글을 보니 아직 모르는 내용도 많고 중요한 내용도 많은 것 같아 따로 정리하려고 한다. 처음 보시는 분들은 질문에 대해 먼저 고민해보고 토글을 열어 보는 것을 추천한다. 또한 답변의 정확하지 않을 수 있으므로 피드백은 환영! 🕸️ internet 📌 301과 302 상태 코드의 의미와 차이는 무엇인가요? 더보기 301과 302는 Redirection 동작을 의미한다. 웹페이지를 새로운 도메인으로 옮겼을 경우 이용자들을 변경된 주소로 자동으로 옮겨가게 만드는데 사용한다. HTTP프로토콜에서 해당 상태..
👶주니어 자바 개발자를 위한 100가지 질문 - Internet, Spring평소에 조금씩 자바 공부를 하고 있는데 기초적인 부분에 대해 너무 많이 모른다는 생각을 자주 했다. 그러던 와중 커리어리에 올라와 있는 조서희님의 주니어 자바 개발자를 위한 100가지 질문이라는 글을 보았다. 글을 보니 아직 모르는 내용도 많고 중요한 내용도 많은 것 같아 따로 정리하려고 한다. 처음 보시는 분들은 질문에 대해 먼저 고민해보고 토글을 열어 보는 것을 추천한다. 또한 답변의 정확하지 않을 수 있으므로 피드백은 환영! 🕸️ internet 📌 301과 302 상태 코드의 의미와 차이는 무엇인가요? 더보기 301과 302는 Redirection 동작을 의미한다. 웹페이지를 새로운 도메인으로 옮겼을 경우 이용자들을 변경된 주소로 자동으로 옮겨가게 만드는데 사용한다. HTTP프로토콜에서 해당 상태..
2023.09.25 -
평소에 조금씩 자바 공부를 하고 있는데 기초적인 부분에 대해 너무 많이 모른다는 생각을 자주 했다. 그러던 와중 커리어리에 올라와 있는 조서희님의 주니어 자바 개발자를 위한 100가지 질문이라는 글을 보았다. 글을 보니 아직 모르는 내용도 많고 중요한 내용도 많은 것 같아 따로 정리하려고 한다. 처음 보시는 분들은 질문에 대해 먼저 고민해보고 토글을 열어 보는 것을 추천한다. 또한 답변의 정확하지 않을 수 있으므로 피드백은 환영! 🕸️Java Web 📌 jsp와 servlet의 차이점은 무엇인가요? 더보기 JavaServerPage JSP는 HTML 내부에 자바 코드를 잡입하는 형식으로 서블릿을 활용하여 웹 프로그래밍을 할 수 있지만, 화면 인터페이스 구현에 너무 많은 코드가 필요하므로 서블릿을 작성하지..
👶주니어 자바 개발자를 위한 100가지 질문 - java Web, 예외클래스평소에 조금씩 자바 공부를 하고 있는데 기초적인 부분에 대해 너무 많이 모른다는 생각을 자주 했다. 그러던 와중 커리어리에 올라와 있는 조서희님의 주니어 자바 개발자를 위한 100가지 질문이라는 글을 보았다. 글을 보니 아직 모르는 내용도 많고 중요한 내용도 많은 것 같아 따로 정리하려고 한다. 처음 보시는 분들은 질문에 대해 먼저 고민해보고 토글을 열어 보는 것을 추천한다. 또한 답변의 정확하지 않을 수 있으므로 피드백은 환영! 🕸️Java Web 📌 jsp와 servlet의 차이점은 무엇인가요? 더보기 JavaServerPage JSP는 HTML 내부에 자바 코드를 잡입하는 형식으로 서블릿을 활용하여 웹 프로그래밍을 할 수 있지만, 화면 인터페이스 구현에 너무 많은 코드가 필요하므로 서블릿을 작성하지..
2023.09.11 -
주니어 자바 개발자를 위한 100가지 질문 평소에 조금씩 자바 공부를 하고 있는데 기초적인 부분에 대해 너무 많이 모른다는 생각을 자주 했다. 그러던 와중 커리어리에 올라와 있는 조서희님의 주니어 자바 개발자를 위한 100가지 질문이라는 글을 보았다. 글을 보니 아직 모르는 내용도 많고 중요한 내용도 많은 것 같아 따로 정리하려고 한다. 처음 보시는 분들은 질문에 대해 먼저 고민해보고 토글을 열어 보는 것을 추천한다. 또한 답변의 정확하지 않을 수 있으므로 피드백은 환영! 🪢reflection 📌 reflection이란 무엇인가요? 더보기 Reflection이란? 리플렉션은 구체적인 클래스 타입을 알지 못하더라도 그 클래스의 메서드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API를 말하며, 컴파일..
👶주니어 자바 개발자를 위한 100가지 질문 - Reflection, Object Copy주니어 자바 개발자를 위한 100가지 질문 평소에 조금씩 자바 공부를 하고 있는데 기초적인 부분에 대해 너무 많이 모른다는 생각을 자주 했다. 그러던 와중 커리어리에 올라와 있는 조서희님의 주니어 자바 개발자를 위한 100가지 질문이라는 글을 보았다. 글을 보니 아직 모르는 내용도 많고 중요한 내용도 많은 것 같아 따로 정리하려고 한다. 처음 보시는 분들은 질문에 대해 먼저 고민해보고 토글을 열어 보는 것을 추천한다. 또한 답변의 정확하지 않을 수 있으므로 피드백은 환영! 🪢reflection 📌 reflection이란 무엇인가요? 더보기 Reflection이란? 리플렉션은 구체적인 클래스 타입을 알지 못하더라도 그 클래스의 메서드, 타입, 변수들에 접근할 수 있도록 해주는 자바 API를 말하며, 컴파일..
2023.09.04 -
평소에 조금씩 자바 공부를 하고 있는데 기초적인 부분에 대해 너무 많이 모른다는 생각을 자주 했다. 그러던 와중 커리어리에 올라와 있는 조서희님의 주니어 자바 개발자를 위한 100가지 질문이라는 글을 보았다. 글을 보니 아직 모르는 내용도 많고 중요한 내용도 많은 것 같아 따로 정리하려고 한다. 처음 보시는 분들은 질문에 대해 먼저 고민해보고 토글을 열어 보는 것을 추천한다. 또한 답변의 정확하지 않을 수 있으므로 피드백은 환영! 📦Container 📌 자바 컨테이너란 무엇인가요? 더보기 자바 컨테이너란, 객체들을 저장하기 위한 저장소(객체)이다. 배열은, 원시타입의 배열을 쓸 때, 크기를 미리 선언하는데, 이는 한 번 정해지면 바꿀 수 없으므로 이에 따른 제약이 생긴다. 자바 컨테이너는 이를 해결할 수..
👶주니어 자바 개발자를 위한 100가지 질문-Container, Multi-Threading평소에 조금씩 자바 공부를 하고 있는데 기초적인 부분에 대해 너무 많이 모른다는 생각을 자주 했다. 그러던 와중 커리어리에 올라와 있는 조서희님의 주니어 자바 개발자를 위한 100가지 질문이라는 글을 보았다. 글을 보니 아직 모르는 내용도 많고 중요한 내용도 많은 것 같아 따로 정리하려고 한다. 처음 보시는 분들은 질문에 대해 먼저 고민해보고 토글을 열어 보는 것을 추천한다. 또한 답변의 정확하지 않을 수 있으므로 피드백은 환영! 📦Container 📌 자바 컨테이너란 무엇인가요? 더보기 자바 컨테이너란, 객체들을 저장하기 위한 저장소(객체)이다. 배열은, 원시타입의 배열을 쓸 때, 크기를 미리 선언하는데, 이는 한 번 정해지면 바꿀 수 없으므로 이에 따른 제약이 생긴다. 자바 컨테이너는 이를 해결할 수..
2023.08.30 -
🔗링크 1106 호텔 Gold5 ⚠️문제 세계적인 호텔인 형택 호텔의 사장인 김형택은 이번에 수입을 조금 늘리기 위해서 홍보를 하려고 한다. 형택이가 홍보를 할 수 있는 도시가 주어지고, 각 도시별로 홍보하는데 드는 비용과, 그 때 몇 명의 호텔 고객이 늘어나는지에 대한 정보가 있다. 예를 들어, “어떤 도시에서 9원을 들여서 홍보하면 3명의 고객이 늘어난다.”와 같은 정보이다. 이때, 이러한 정보에 나타난 돈에 정수배 만큼을 투자할 수 있다. 즉, 9원을 들여서 3명의 고객, 18원을 들여서 6명의 고객, 27원을 들여서 9명의 고객을 늘어나게 할 수 있지만, 3원을 들여서 홍보해서 1명의 고객, 12원을 들여서 4명의 고객을 늘어나게 할 수는 없다. 각 도시에는 무한 명의 잠재적인 고객이 있다. 이때..
백준 1106 호텔[JAVA]🔗링크 1106 호텔 Gold5 ⚠️문제 세계적인 호텔인 형택 호텔의 사장인 김형택은 이번에 수입을 조금 늘리기 위해서 홍보를 하려고 한다. 형택이가 홍보를 할 수 있는 도시가 주어지고, 각 도시별로 홍보하는데 드는 비용과, 그 때 몇 명의 호텔 고객이 늘어나는지에 대한 정보가 있다. 예를 들어, “어떤 도시에서 9원을 들여서 홍보하면 3명의 고객이 늘어난다.”와 같은 정보이다. 이때, 이러한 정보에 나타난 돈에 정수배 만큼을 투자할 수 있다. 즉, 9원을 들여서 3명의 고객, 18원을 들여서 6명의 고객, 27원을 들여서 9명의 고객을 늘어나게 할 수 있지만, 3원을 들여서 홍보해서 1명의 고객, 12원을 들여서 4명의 고객을 늘어나게 할 수는 없다. 각 도시에는 무한 명의 잠재적인 고객이 있다. 이때..
2023.08.02 -
🔗링크 1765 닭싸움 팀 정하기 Gold2 ⚠️문제 닭싸움은 월드의 전통이다. 이번 캠프에서도 어김없이 닭싸움 대회가 열렸다. 그런데, 닭싸움을 하기 위해서는 반드시 누가 우리 편이고, 누가 우리 편이 아닌지를 알아야 할 것이다. 닭싸움의 팀을 정하는 원칙은, 평소 학생들의 인간관계에 따라 다음과 같이 정리할 수 있다. 내 친구의 친구는 내 친구이다. 내 원수의 원수도 내 친구이다. 이 때 두 학생이 친구이면 같은 팀에 속해있어야 하며, 같은 팀에 속해 있는 사람들끼리는 전부 친구여야 한다. 학생들의 인간관계가 주어지면, 닭싸움을 위한 팀 정하기를 할 때, 최대 얼마나 많은 팀이 만들어질 수 있는지 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 학생의 수 n이 주어진다. 각 학생들은 1부터 n까지 번..
백준 1765 닭싸움 팀 정하기[JAVA]🔗링크 1765 닭싸움 팀 정하기 Gold2 ⚠️문제 닭싸움은 월드의 전통이다. 이번 캠프에서도 어김없이 닭싸움 대회가 열렸다. 그런데, 닭싸움을 하기 위해서는 반드시 누가 우리 편이고, 누가 우리 편이 아닌지를 알아야 할 것이다. 닭싸움의 팀을 정하는 원칙은, 평소 학생들의 인간관계에 따라 다음과 같이 정리할 수 있다. 내 친구의 친구는 내 친구이다. 내 원수의 원수도 내 친구이다. 이 때 두 학생이 친구이면 같은 팀에 속해있어야 하며, 같은 팀에 속해 있는 사람들끼리는 전부 친구여야 한다. 학생들의 인간관계가 주어지면, 닭싸움을 위한 팀 정하기를 할 때, 최대 얼마나 많은 팀이 만들어질 수 있는지 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 학생의 수 n이 주어진다. 각 학생들은 1부터 n까지 번..
2023.08.02 -
🔗링크 1068 트리 Gold5 ⚠️문제 트리에서 리프 노드란, 자식의 개수가 0인 노드를 말한다. 트리가 주어졌을 때, 노드 하나를 지울 것이다. 그 때, 남은 트리에서 리프 노드의 개수를 구하는 프로그램을 작성하시오. 노드를 지우면 그 노드와 노드의 모든 자손이 트리에서 제거된다. 예를 들어, 다음과 같은 트리가 있다고 하자. 현재 리프 노드의 개수는 3개이다. (초록색 색칠된 노드) 이때, 1번을 지우면, 다음과 같이 변한다. 검정색으로 색칠된 노드가 트리에서 제거된 노드이다. 이제 리프 노드의 개수는 1개이다. 입력 첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (..
백준 1068 트리[JAVA]🔗링크 1068 트리 Gold5 ⚠️문제 트리에서 리프 노드란, 자식의 개수가 0인 노드를 말한다. 트리가 주어졌을 때, 노드 하나를 지울 것이다. 그 때, 남은 트리에서 리프 노드의 개수를 구하는 프로그램을 작성하시오. 노드를 지우면 그 노드와 노드의 모든 자손이 트리에서 제거된다. 예를 들어, 다음과 같은 트리가 있다고 하자. 현재 리프 노드의 개수는 3개이다. (초록색 색칠된 노드) 이때, 1번을 지우면, 다음과 같이 변한다. 검정색으로 색칠된 노드가 트리에서 제거된 노드이다. 이제 리프 노드의 개수는 1개이다. 입력 첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (..
2023.07.30 -
🔗링크 18430 무기 공학 gold4 ⚠️문제 공학자 길동이는 외부의 침략으로부터 마을을 지킬 수 있는 부메랑 무기를 개발하는 공학자다. 길동이는 부메랑 제작을 위한 고급 나무 재료를 구했다. 이 나무 재료는 NxM크기의 직사각형 형태이며 나무 재료의 부위마다 그 강도가 조금씩 다르다. 예를 들어 나무 재료의 크기가 2x3일 때는 다음과 같이 총 6칸으로 구성된다. 길동이는 이처럼 넓은 사각형 형태의 나무 재료를 잘라서 여러 개의 부메랑을 만들고자 한다. 그리고 부메랑은 항상 3칸을 차지하는 ‘ㄱ’모양으로 만들어야 한다. 따라서 부메랑의 가능한 모양은 다음과 같이 총 4가지다. 이때 부메랑의 중심이 되는 칸은 강도의 영향을 2배로 받는다. 위 그림에서 노란색으로 칠한 부분이 ‘중심이 되는 칸’이다. 예..
백준 18430 무기공학[JAVA]🔗링크 18430 무기 공학 gold4 ⚠️문제 공학자 길동이는 외부의 침략으로부터 마을을 지킬 수 있는 부메랑 무기를 개발하는 공학자다. 길동이는 부메랑 제작을 위한 고급 나무 재료를 구했다. 이 나무 재료는 NxM크기의 직사각형 형태이며 나무 재료의 부위마다 그 강도가 조금씩 다르다. 예를 들어 나무 재료의 크기가 2x3일 때는 다음과 같이 총 6칸으로 구성된다. 길동이는 이처럼 넓은 사각형 형태의 나무 재료를 잘라서 여러 개의 부메랑을 만들고자 한다. 그리고 부메랑은 항상 3칸을 차지하는 ‘ㄱ’모양으로 만들어야 한다. 따라서 부메랑의 가능한 모양은 다음과 같이 총 4가지다. 이때 부메랑의 중심이 되는 칸은 강도의 영향을 2배로 받는다. 위 그림에서 노란색으로 칠한 부분이 ‘중심이 되는 칸’이다. 예..
2023.07.29 -
주니어 자바 개발자를 위한 100가지 질문 평소에 조금씩 자바 공부를 하고 있는데 기초적인 부분에 대해 너무 많이 모른다는 생각을 자주 했다. 그러던 와중 커리어리에 올라와 있는 조서희님의 주니어 자바 개발자를 위한 100가지 질문이라는 글을 보았다. 글을 보니 아직 모르는 내용도 많고 중요한 내용도 많은 것 같아 따로 정리하려고 한다. 처음 보시는 분들은 질문에 대해 먼저 고민해보고 토글을 열어 보는 것을 추천한다. 또한 답변의 정확하지 않을 수 있으므로 피드백은 환영! 기초 📌 JDK와 JRE의 차이점은 무엇입니까? 더보기 JRE(Java Runtime Envieronment): 자바 실행 환경이다. JVM(Java Virtual Machine)와 Java binaries, java 클래스 라이브러리..
👶주니어 자바 개발자를 위한 100가지 질문-기초주니어 자바 개발자를 위한 100가지 질문 평소에 조금씩 자바 공부를 하고 있는데 기초적인 부분에 대해 너무 많이 모른다는 생각을 자주 했다. 그러던 와중 커리어리에 올라와 있는 조서희님의 주니어 자바 개발자를 위한 100가지 질문이라는 글을 보았다. 글을 보니 아직 모르는 내용도 많고 중요한 내용도 많은 것 같아 따로 정리하려고 한다. 처음 보시는 분들은 질문에 대해 먼저 고민해보고 토글을 열어 보는 것을 추천한다. 또한 답변의 정확하지 않을 수 있으므로 피드백은 환영! 기초 📌 JDK와 JRE의 차이점은 무엇입니까? 더보기 JRE(Java Runtime Envieronment): 자바 실행 환경이다. JVM(Java Virtual Machine)와 Java binaries, java 클래스 라이브러리..
2023.07.17 -
아래의 글은 네이버 캠퍼스 핵데이 Java 코딩 컨벤션을 기준으로 작성된 글입니다. ▶중괄호 K&R 스타일로 중괄호 선언 클래스 선언, 메서드 선언, 조건/반복문 등의 코드 블럭을 감싸는 중괄호에 적용되는 규칙이다. 중괄호 선언은 K&R 스타일을 따른다. 줄의 마지막에서 시작 중괄호를 ‘{’ 를 쓰고 열고 새줄을 삽입한다. 블럭을 마친후에는 새줄 삽입 후 중괄호를 닫는다. else, catch, finally, while(do while)은 닫는 중괄호와 같은 줄에 선언 //Bad Example public class SearchConditionParser { public boolean isValidExpression(String exp) { if (exp == null) { return false; }..
자바 코드 컨벤션 (2)아래의 글은 네이버 캠퍼스 핵데이 Java 코딩 컨벤션을 기준으로 작성된 글입니다. ▶중괄호 K&R 스타일로 중괄호 선언 클래스 선언, 메서드 선언, 조건/반복문 등의 코드 블럭을 감싸는 중괄호에 적용되는 규칙이다. 중괄호 선언은 K&R 스타일을 따른다. 줄의 마지막에서 시작 중괄호를 ‘{’ 를 쓰고 열고 새줄을 삽입한다. 블럭을 마친후에는 새줄 삽입 후 중괄호를 닫는다. else, catch, finally, while(do while)은 닫는 중괄호와 같은 줄에 선언 //Bad Example public class SearchConditionParser { public boolean isValidExpression(String exp) { if (exp == null) { return false; }..
2023.06.30 -
아래의 글은 네이버 캠퍼스 핵데이 Java 코딩 컨벤션을 기준으로 작성된 글입니다. 📁파일 공통 요건 파일 끝에 개행 추가 파일의 마지막은 새줄 문자 LF로 끝나야한다. POSIX에 명시되어 있으며, 모든 표준이 이에 따르므로 오류가 발생할 수 있다. 🆕이름 대문자로 표기할 약어 명시 약어의 중간단어를 소문자로 표기하고 프로젝트 별로 모두 대문자로 표기할 약어의 목록을 명시하는 방식이 가독성을 높이고 규칙을 단순화하는데 유리하다. 패키지 이름은 소문자로 구성 패키지 이름은 소문자를 사용하여 작성한다. 단어별 구분을 위해 언더바나 대문자를 섞지 않는다. //Bad Example package com.navercorp.apiGateway package com.navercorp.api_gateway //Goo..
자바 코드 컨벤션 (1)아래의 글은 네이버 캠퍼스 핵데이 Java 코딩 컨벤션을 기준으로 작성된 글입니다. 📁파일 공통 요건 파일 끝에 개행 추가 파일의 마지막은 새줄 문자 LF로 끝나야한다. POSIX에 명시되어 있으며, 모든 표준이 이에 따르므로 오류가 발생할 수 있다. 🆕이름 대문자로 표기할 약어 명시 약어의 중간단어를 소문자로 표기하고 프로젝트 별로 모두 대문자로 표기할 약어의 목록을 명시하는 방식이 가독성을 높이고 규칙을 단순화하는데 유리하다. 패키지 이름은 소문자로 구성 패키지 이름은 소문자를 사용하여 작성한다. 단어별 구분을 위해 언더바나 대문자를 섞지 않는다. //Bad Example package com.navercorp.apiGateway package com.navercorp.api_gateway //Goo..
2023.06.30