profile
컴퓨터공학과에 재학중이며, 백엔드를 지향하고 있습니다. 많이 부족하지만 열심히 노력해서 실력을 갈고 닦겠습니다. 부족하고 틀린 부분이 있을 수도 있지만 이쁘게 봐주시면 감사하겠습니다. 틀린 부분은 댓글 남겨주시면 제가 따로 학습 및 자료를 찾아봐서 제 것으로 만들도록 하겠습니다. 귀중한 시간 방문해주셔서 감사합니다.
post-thumbnail

백준 1088 케이크 자바

저의 100번째 포스팅을 자축하기 위해, 어떤 문제를 풀지 고민하다, 케이크는 주로 기념일에 먹으며, 상징성은 기념일이라 생각합니다. 따라서, 백준의 문제로 있어 100번째 기념으로 플레티넘2, 케이크 문제를 풀게 되었습니다.. ㅋㅋㅋ To celebrate my 100th posting on Velog, I will tackle a Platinum 2 level cake problem of the Baekjoon website. 영어를 못하지만 백 번째 기념으로 영어도 한 번 써봤습니다. 문제 출처 : https://www.acmicpc.net/problem/1088 ![](https://velog.velcdn.com/images/ohoh7391/post/e257842f-b0bb-4ed2-

2023년 6월 2일
·
0개의 댓글
·
post-thumbnail

백준 1006 습격자 초라기 Java

문제 링크 : https://www.acmicpc.net/problem/1006 접근 방법 먼저 습격자 초라기 문제에 대한 정보를 파악한 후에, 핵심 아이디어를 도출하고 이를 구현할 접근 방법을 설명합니다. 문제 우리 복리 팀은 둘레로 둘러싸인 길이 N인 선형 벽돌로 구성된 적의 요새를 습격했습니다. 각 벽돌은 부서질까지 일정 횟수의 공격을 받을 수 있습니다. 복리 팀은 2명이서 습격 계획을 세웠고, 한 사람의 공격력이 모두 다르습니다. 한 사람이 공격할 수 있는 벽돌 개수가 제한되어 있으며, 연속된 벽돌을

2023년 5월 30일
·
0개의 댓글
·
post-thumbnail

자바의정석 6

JavaStudy 23.05.23 자바의 정석 chapter 6를 읽고 느낀점을 저만의 방식으로 정리 및 포스팅했습니다. 필자가 독자에게 '전달 하고싶은 생각' 너무 객체지향 개념에 얽매여서 고민하기 보다는, 일단 프로그램을 기능적으로 완성한 다음, 어떻게 하면 보다 객체지향적으로 코드를 개선할 수 있을지를 고민하여 점차 개선해 나가는 것이 좋습니다. 즉, 다양한 프로젝트 경험이 쌓여야 한다는 것입니다. --> 문법공부 및 이론 공부가 어느정도 끝났다면, 이제는 다양한 프로젝트를 진행하여 부딪혀보고, 코드 개선을 고민하는 " 과정 " 을 겪음으로써 성장한다는 것입니다. >다시 말해, 처음부터 이론을 완벽하게 100 % 이해한다는 것은 불가능합니다. 또한, 이론을 많이 안다고 해서 좋은 설계를 할 수 있는 것은 아닙니다. 예시를 들어, 축구를 잘하려고 축구 공부만 엄청 했습니다.(축구를 하지않

2023년 5월 25일
·
0개의 댓글
·
post-thumbnail

백준 14502 연구소 Java

난이도 골드 4 문제 https://www.acmicpc.net/problem/14502 접근 방법 1. 완전 탐색(Brute Force)과 DFS(깊이 우선 탐색) 사용 연구소에서 3개의 벽을 세울 수 있는 모든 조합을 찾기 위해 완전 탐색을 사용합니다. 맵의 크기가 최대 8x8로 제한되어 있으므로, 완전 탐색으로 모든 경우의 수를 검토하는 것이 가능하며 시간복잡도가 매우 높지 않습니다. 벽을 세우는 과정까지는 반복문을 사용하여 구현할 수도 있지만, 재귀를 이용하여 벽을 하나씩 세우기 위해 DFS를 사용할 수 있습니다. 2. 바이러스 퍼뜨리기 BFS 모든 경우의 수에 대해 3개의 벽을 세운 후, 바이러스를 퍼뜨립니다. 바이러스를 퍼뜨리는 방법으로는 BFS(너비 우선 탐색)를 사용하는 것이 좋습니다. 한 지점에서 시작한 후, 주위로 퍼지기 때문에, BFS로 각 위치에 바이러스를 퍼뜨리는 것이 합리적이기 때문입니다.

2023년 5월 24일
·
0개의 댓글
·
post-thumbnail

5.23 JavaStudy

기본적인 반복문입니다. 해당 문제를 10분이내 풀어보세요. 첫 도전시 20분? 걸렸던 것 같습니다. 해당 출력문을 보고 코드 작성 정답 코드 필자는, 3개의 반복문을 돌려서, 조건문을 사용해서 역피라미드에서 10을 초과할경우 출력되게끔 하려고 하였으나, 제대로 구현하지 못했습니다. (아마 지금은 가능할거임. 왜냐면, 해당 문제에서 KeyPoint는 반복문을 변수로 초기화하는 것입니다) static은 객체 생성 안하고 바로 올 수 있다고 배웠어. 왜 그런거야? 정답 static 키워드는 클래스가 인스턴스화되지 않아도 메서드나 필드에 접근할 수 있게 해주는 것입니다. 이는 프로그램 실행 시 클래스가 메모리에 로드되면서 static 메서드와 변수도 메

2023년 5월 23일
·
0개의 댓글
·
post-thumbnail

Java_패키지

자바 패키지 설명 및 패키지 사용하여 문제푸는 법을 간단하게 학습 및 포스팅하였습니다. Java 패키지 Java에서 패키지(package)란 관련된 클래스들을 그룹화하여 관리하기 위한 방법입니다. 패키지는 폴더 구조와 비슷한 형태를 가지며, 클래스 파일들을 서로 다른 패키지에 넣어서 관리하게 됩니다. 패키지의 두 가지 이점 첫 번째로, 패키지를 사용하여 클래스 이름 충돌을 방지할 수 있습니다. 즉, 서로 다른 패키지에 있는 동일한 클래스 이름이 충돌하는 경우를 방지할 수 있습니다. 두 번째 이점, 클래스들을 논리적으로 그룹화하여 개발을 용이하게 합니다. 즉, 관련된 클래스들을 한 곳에 모아서 개발하고 유지보수하기 용이합니다. 패키지는 다음과 같은 형태로 작성됩니다. 위의 예시에서 패키지 이름은 "com.example.mypackage" 입니다. 패키지 이름은 일반적으로 역순 도메인명을 포함하며, Java에서 제공하는 패키지와 충돌

2023년 5월 15일
·
0개의 댓글
·
post-thumbnail

Java_컬렉션

Java_컬렉션에 대해서 문제위주 학습한 것을 포스팅하였습니다. 최대한 이해하기 쉽게 설명해보았습니다. 컬렉션 컬렉션 프레임워크란 무엇인지 개념을 설명 --> 밑줄친 부분에 무엇이 들어가야할지 맞춰봅시다. 사전학습 아무 자바 책의 컬렉션 파트를 봤을 때, 꽤 어렵네.. 라고 느낀다면? --> 선수학습이 안되어 있어서 그렇습니다. 이것은, OOP, 추상클래스, 상속, 인터페이스 를 무조건. 남한테 설명할 수 있을정도로 학습을 해야합니다. (해당 포스트가 이해가 안될 경우, 이전 포스팅들을 읽어보시는 것을 권장드립니다) 사전학습이 안되어 있으면, 컬렉션을 이해하기 어렵습니다. 필자는 컬렉션에 대한 개념과 ArrayList 클래스 위주로 포스팅 할 예정입니다. 컬렉션 프레임워크란 ? "수집품"이라는 사전적 의미에서 유추할 수 있듯이 "데이터 값들을 담는 여러

2023년 5월 14일
·
0개의 댓글
·
post-thumbnail

Java_제네릭

자바 제네릭이 필요한 이유, 사용법, 개념을 문제위주로 정리했습니다. 제네릭의 개념과 필요성 (코드로 설명) 모든 타입을 다 받는 클래스 만들기 __ 에 어떤 것이 들어와야 하는지 작성 hint, 이 문제는 자바 문법중 제네릭에 대한 개념과 필요성에 대해서 알고 있는지를 묻는 문제입니다. main 함수 정답 Object 코드 Awesome ! 이러한 단점들을 보완하기 위해서 Generic 이 나오게 되었습니다. ClassCast ERR 컴파일 단계에서는 에러가 안나고, 실행 단계에서 ClassCast 오류가 발생하는 상황 만들기 hint, 제네릭의 필요성을 보여주는 예를 코드로 설명할 수 있는지 확인하는 문제입니다. code

2023년 5월 13일
·
0개의 댓글
·
post-thumbnail

Java_OOP2

Java_OOP2 추상클래스, 인터페이스, 다형성에 대해 문제 위주의 포스팅 할 예정입니다. 아래의 질문에 답해보시오 1) 추상 클래스란 ? 2) 추상 클래스와 일반 클래스의 차이점은? 3) 추상 클래스는 객체 생성이 가능한가? 4) 추상 클래스는 어떻게 사용하는가? 5) 추상 클래스의 역할은 무엇이고 왜 필요한 것인가? 6) 추상 클래스는 상속이 가능한가? 7) 추상 클래스의 추상 메서드는 꼭 오버라이딩하여 사용해야만 하는가? 8) 추상 메서드를 포함하고 있다면 추상 클래스여야 하는가? 9) 추상 클래스를 만들려면 abstract를 꼭 써야 하는가? 추상 클래스와 추상 메서드란 무엇인지 설명하고 관련된 예제 코드를 구현 추상클래스란, abstract 를 작성해줌으로써 명시적으로 추상클래스라고 알려줌. 구체적인 내용은 작성하지 않고, 공통적인 특징을 추상적으로 선언만 해둠.--> 리턴값 조차도 없이 메서드명만 선

2023년 5월 10일
·
0개의 댓글
·
post-thumbnail

Java_OOP1

Java_OOP1 클래스, (게더,세터), 상속, 오버라이딩, 반복문 포스팅할 예정입니다. 문제 위주로 정리했습니다. 각 문제를 풀어보시고, 테스트해보시면 좋을 것 같습니다. 클래스란 무엇이고, 어떤 역할을 하는지 설명 필요한 이유 >여러사람이 협업을 하는 과정에서 좀더 체계적이고, 분업화된 시스템으로 개발하기 위해 필요합니다. 클래스란 ? -> 만들고자 하는 객체 특징,동작 -> (속성,기능) 을 설계 객체(또는 인스턴스)를 생성하는 하나의 공장(=틀, 주문서) 즉, 클래스는 마트이고, 객체는 각 상품들이다. 각 상품들은 속성과 데이터를 가진다. 객체는 어떻게 만들지 ? 원하는 속성과 기능을 생각하고 구현 객체의 특징 --> 속성 객체의 동작 --> 메서드 = 함수 FarmMachine의 속성과 동작들을 가지는 클래스를 코드로 구현하고 객체를 생성하여 동작 출력을 보고 구현 정답 천 단위 콤마찍기

2023년 5월 8일
·
0개의 댓글
·
post-thumbnail

함수

필자가 지속적으로 자바를 복습하는 이유는, 한 가지 언어를 완벽하게 구사하기 위해서입니다. 여러 언어를 익히는 것도 좋지만, 저는 Java를 완벽하게 정복하고 싶습니다. 따라서, 이전에 공부했던 내용이지만, 다른 교재 및 강의를 지속적으로 시청하고 있으며, 이에 따라 지속적으로 Java에 대해 포스팅하게 되었습니다. 또한, 코딩테스트 및 알고리즘을 게을리 하지 않고, 매일 공부하고 있습니다 ! 🏃‍♂️ (먼 미래엔 제가 자바를 강의할 정도의 실력이 되어 있길🙏) 강의 출처 : 인프런 자바 입문, 인프런 자바 100제 , [자바 TPC](https://www.inflearn.com/course/%EC%9E%90%EB%B0%94-%EC%9

2023년 5월 4일
·
0개의 댓글
·
post-thumbnail

Java_상속 및 클래스 && 람다

자바를 JAVA🥸,, 필자가 이해한 내용을 토대로 상속 및 클래스부터 람다까지 제대로 정리하겠습니다. (이해를 돕고자, 코드 및 그림 추가하였습니다) 상속 상속이란 ? 상속은 부모클래스를 상속받은 자식 클래스는 부모 클래스의 캡슐화(속성+기능) 이용가능합니다. 상속의 필요성 기존의 검증된 class를 이용해서 빠르고 쉽게 새로운 class를 만들 수 있습니다. Ex) G_Food : 할아버지 운영, 10개 메뉴 P_Food : 아버지 운영,(할아버지 메뉴 10개 + 아버지의 독특한 메뉴 2개), 총 12개 C_Food : 아들 운영, (할아버지 메뉴 10개 + 아버지의 메뉴 2개, 아들 메뉴 3개) 총 15개 즉, 검증된 메뉴를 이용해서 쉽고 빠르게 개업할 수 있습

2023년 5월 2일
·
0개의 댓글
·
post-thumbnail

객체지향 프로그래밍(OOP)

4.26 스터디를 통해, OOP에 대한 글쓰기를 하게 되었습니다. OOP에 대해서, 조금 더 쉽게 이해하기 위해서 글로만 작성하게 되었습니다. OOP를 이해하기 위해, 보다 자세히 작성할 것이며, 이해를 돕고자 필자가 실상에서 쓰이는 용어를 활용할 예정입니다. OOP는 객체의 관점에서 프로그래밍 하는 것을 의미합니다. C언어를 절차 지향 프로그래밍이라 하는데, 절차 지향 프로그래밍은 프로세스가 함수 단위로 순서대로 진행되는 것을 말합니다. 반면 OOP는 객체들의 유기적인 관계를 통해서 프로세스가 진행된다고 명기되어있습니다. 이를 좀더 쉽게 설명해보겠습니다. 절차지향 프로그래밍 절차지향 프로그래밍은 데이터와 기능이 별도로 관리됩니다. 따라서, 순서가 자주 바뀌거나 복잡해지면 유지비용이 많이 듭니다. (복잡해지는 경우는 보통 여러 구조를 짜서 프로그래밍을 하면 복잡해집니다. 즉, 규모가 커지면 복잡해진다고 생각하시면 됩니다.) 이를 해결하기 위해 <span st

2023년 4월 29일
·
0개의 댓글
·
post-thumbnail

Java OOP(2)

23.04.08 this 자신의 메모리를 가리킵니다. this는 생성된 인스턴스 스스로를 가리키는 예약어입니다. 생성자에서 다른 생성자를 호출하는 this this로 다른 생성자를 호출할 때 주의할점. this를 사용하여 생성자를 호출하는 코드 이전에 다른 코드를 넣을 수 없습니다. 만약 다른 코드를 넣으면 오류발생. 생성자는 클래스가 생성될 때, 호출되므로 클래스 생성이 완료되지 않은 시점에 다른 코드가 있다면 오류가 발생할 수 있습니다. 즉, 디폴트 생성자에서 생성이 완료되는 것이 아니라 this를 사용해 다른 생성자를 호출하므로, 이때는 this를 활용한 문장이 가장 먼저 와야 합니다. 자신의 주소를 반환하는 this 클래스 자료형과 상관없이 클래스내에서 this를 사용하면, 자신의 주소 값을 반환할 수 있습니다. 객체 간 협력 static 변수 변수를 여러 클래스에서 공통으로 사용하려면 ? staic

2023년 4월 8일
·
1개의 댓글
·
post-thumbnail

Java OOP(1)

~ 4월 8일, 객체지향 프로그래밍 OOP 객체지향 프로그래밍, 객체를 기반으로 하는 프로그램 절차지향 프로그래밍 일어나는 일을 시간순으로 프로그래밍 대표적으로, C 언어 객체지향 프로그래밍 객체를 정의하고, 객체 간 협력을 프로그래밍 하는 것 먼저 객체를 만들고 객체 사이에 일어나는 일을 구현하는 것입니다. 따라서, 객체를 먼저 정의하고, 각 객체가 어떤 기능을 제공하고 객체 간 협력을 어떻게 구현할 것인지 고민하는게 keyPoint 클래스 객체지향 프로그래밍은 클래스를 기반으로 프로그래밍 클래스는 객체의 속성과 기능을 코드로 구현한 것. 클래스의 이름은 대문자로 시작 문법 클래스에 선언하는 멤버 변수는 다른 말로 속성, 특성으로 표현됩니다. 멤버변수 예시 멤버 변수는 기본자료형 || 참조자료형으로 나뉨. 기본자료형 (int,long, float, double 등), 참조자료형 (String, Da

2023년 4월 4일
·
1개의 댓글
·
post-thumbnail

Java 기본 개념

해당 포스팅을 읽고 많은 분들의 도움이 되면, 좋겠다는 취지에서 작성하게 되었습니다. 자바의 기본 개념에 대해서 설명합니다. JVM 구성요소 Java Virtual Machine의 줄임말이며, '자바를 실행하기 위한 가상 기계(컴퓨터)'입니다. Java 는 OS에 종속적이지 않다는 특징을 가지고 있다. OS에 종속받지 않고 실행되기 위해선 OS 위에서 Java 를 실행시킬 무언가가 필요하다. 그게 바로 JVM이다. 즉, OS에 종속받지 않고 CPU 가 Java를 인식, 실행할 수 있게 하는 가상 컴퓨터입니다. 바이너리 코드 (== 이진코드) 컴퓨터가 인식할 수 있는 0과 1로 구성된 이진코드 `즉, CPU가 이해하는 언어는 바이너리 코드, 가상 머신이 이해

2023년 3월 6일
·
0개의 댓글
·
post-thumbnail

Baekjoon 브론즈 3

이 문제에서 가장 중요한 점이 파일 종료 조건이 없이 그냥 입력이 주어졌다는 것이다. 즉 입력에서 더이상의 읽을 수 있는 데이터가 존재하지 않을 때 반복문을 종료하라는 것이다. 이렇게 데이터가 더이상 존재하지 않을 때 우리는 EOF (End of File) 즉, 파일의 끝이라 한다. 2490 StringTokenizer 사용자가 지정하는 구분자를 경계로 하여 문자열을 나눠주는 Class. 만약 사용자가 구분자 지정을 생략하면 공백이나 탭이 기본 구분자로 사용된다. StringTokenizer 클래스 생성자의 3번째 인수로 구분자를 토큰에 포함할지의 여부를 지정할 수 있다. 3번째 인수 생략시(false) 구분자는 토큰에 포함되지 않지만, 3번째 인수에 true를 입력하면 구분자도 토큰으로 취급한다. StringTokenizer 클래스 생성자의 2번째 인수로 구분자를 여러개 지정할 수 있다. (변수에 저장된 문자열의 시작인 사과

2023년 2월 14일
·
0개의 댓글
·
post-thumbnail

BufferedReader, BufferedWirter 사용법

Scanner BufferedReader 를 보기 전에 먼저 Scanner을 확인. 대부분 Java를 처음 배울 때, Scanner를 통한 입출력을 먼저 배우게 됩니다. 필자 또한 그랬습니다. Scanner은 띄어쓰기와 개행문자를 경계로 하여 입력 값을 인식합니다. 그렇기 떄문에 따로 가공할 필요가 없어서 편리합니다. 가공할 필요가 없다는 뜻은 int형 변수를 입력 받고자 하면, int x = scanner.nextInt() 를 사용해 바로 원하는 타입의 입력을 받을 수 있습니다. 하지만, 이번에 살펴볼 BufferedReader은 입력 받은 데이터가 String 으로 고정되기 때문에 입력받은 데이터를 원하는 타입으로 가공하는 작업이 필요합니다. scanner는 지원해주는 메소드가 많고, 사용하기 쉬우나, 많은 입력을 필요로 할 경우에는 버퍼 사이즈가 작아 효율적이지 못하고 성능상 좋지 못한 결과를 불러옵니다. 간단하게 __BufferedReade

2023년 2월 14일
·
0개의 댓글
·
post-thumbnail

기본적인 스윙 컴포넌트와 활용(2)

JCheckBox 선택(selected), 비선택(deselected)의 두 상태만 가지는 체크 버튼 생성자 selected: true면 선택 상태로 초기화, 디폴트는 해제 상태 체크 박스 생성 문자열 체크 박스 "사과" 텍스트를 가진 체크박스 생성 JcheckBox c = new JCheckBox("사과"); "배" 텍스트를 가지고 선택 상태로 체크박스 생성 JCheckBox c = new JCheckBox("배", true); 체크 박스 모양이 명료하게 출력되고 사용자는 이것을 체크 이미지 아이콘을 가진 체크 박스 생성

2022년 9월 30일
·
0개의 댓글
·
post-thumbnail

기본적인 스윙 컴포넌트와 활용

Gui를 구성하는 2가지 방법 1. 컴포넌트 기반 GUI 프로그래밍 스우이 패키지에 주어진 gui 컴포넌트 이용 gui 구성이 쉽다. 자바 패키지에 제공하는 gui 컴포넌트 한계 일반적인 gui 프로그램에 적합 2. 그래픽 기반 GUI 프로그래밍 선, 원, 도형, 이미지를 직접 그려내는 그래픽 화면 구성 개발자의 작업 부담 높음 자바 패키지에 없는 독특한 Gui 구성 가능 게임 등 자유로은 gui > grid = 가로,세로 나눌 수 있음 layout = 컨테이너에 (바탕되는 것 : contentPane) adapt -> 인터페이스 JComponent의 메소드 컴포넌트의 모양과 관련된 메소드 컴포넌트의 상태와 관

2022년 9월 30일
·
0개의 댓글
·