본문 바로가기

분류 전체보기

(31)
[BOJ] 1802 종이 접기 (Java) 문제 링크https://www.acmicpc.net/problem/1802 개념 이해분할정복 분할 정복 : 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결함분할 정복 과정1. 분할 : 해결하기 쉽도록 문제를 여러 개의 작은 부분으로 나눈다.2. 정복 : 나눈 작은 문제를 각각 해결한다.3. 통합 : 필요하다면, 해결된 답안을 모은다.분할 정복의 특징재귀적 : 큰 문제를 해결하기 위해 동일한 방법을 더 작은 문제들에 반복 적용합니다.문제 분할 : 주어진 문제를 여러 개의 하위 문제로 나누어 처리한다.하위 문제의 독립성 : 각 하위 문제는 서로 독립적으로 해결될 수 있다.합병 : 하위 문제들을 해결한 결과를 결합하여 최종 해결책을 도출한다.문제 이해분할정복의 접근 방법인덱스를 잘 구분한다. ..
[BOJ] 1138 한 줄로 서기 (Java) 문제 링크https://www.acmicpc.net/problem/1138 문제 이해개인적으로 무슨 말인지 이해가 안가서 헤맨 문제다. 간단하게 말하자면, 순서 세우기인데 index번호가 키를 뜻하는 지 몰랐다 (문제에 나와있음에도 불구하고 ㅎㅎ) 이 문제는 키가 큰 순서대로 해당하는 order 번호에 넣어주면된다.고정 리스트를 사용하지 않고 가변 리스트를 사용하면 키큰 아이가 먼저 서고, 키가 작은 아이가 이후에 order에 맞게 섰을 때order[index]값 자신이 기억하고 있는 "자신보다 키 큰 사람의 수"가 변경되지 않기 때문에 무관하다. 이 문제는 ArrayList의 index 개념을 이해했는가 & 응용할 수 있는가를 확인하는 문제같다. 예제7 6 1 1 1 2 0 0 풀이 과정  코드pack..
[BOJ] 4485 녹색 옷 입은 애가 젤다지? (Java) https://www.acmicpc.net/problem/4485 큐를 PriorityQueue로 count 값을 갱신해줘야했던 문제- BFS에서 최소값을 visited처럼 갱신해주었다.package BOJ;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.*;/** * BOJ_녹색 옷 입은 애가 젤다지? * * 젤다 화폐 -> 루피 * 도둑루피 : 검정색 루피 -> 이거 갖게되면 오히려 소지한 루피가 감소 * 링크는 주인공(0,0에 있음) * * */public class BOJ_4485_녹색옷입은애가젤다지 { static BufferedReader br; ..
[Effective Java] 클래스와 인터페이스 - 1. 자바의 캡슐화와 정보 은닉 다음 내용은 이펙티브 자바 4장 클래스와 인터페이스 중Item 15. 클래스와 멤버의 접근 권한을 최소화하라.Item 16. public 클래스에서는 public 필드가 아닌 접근자 메서드를 사용하라"캡슐화"와 "정보 은닉"과 관련된 개념을 다룹니다.  들어가기 앞서잘 설계된 컴포넌트는 모든 내부 구현을 완벽히 숨기고, 구현과 API를 깔끔하게 분리한다.오직 API를 통해서만 다른 컴포넌트와 소통하며, 서로의 내부 동작 방식에 영향을 주지 않는다. 이를 "정보 인닉" 혹은 "캡슐화"라고 한다. 이펙티브 자바의 클래스와 인터페이스를 알아보며, 캡슐화에 대해 공부해보자! 캡슐화관련 있는 멤버 변수와 메서드를 하나의 클래스로 묶고, 외부에서 쉽게 접근하지 못하도록 하는 기법 정보 은닉객체 지향 프로그래밍에서 ..
[Effective Java] 정적 팩토리 메서드(Static Factory Method)는 왜 사용할까? Item 1. 생성자 대신 정적 팩터리 메서드를 고려하라.  정적 팩터리 메서드란?정적(static) 팩토리(factory) 메서드 (method)객체 생성을 캡슐화하는 기법좀 더 구체적으로는 객체를 생성하는 메서드를 만들고, static으로 선언하는 기법이다.생성자 호출 방식이 아닌, 메서드 호출 방식으로 객체를 생성하는 것이다. 정적 팩토리 메서드는 객체의 생성을 담당하는 클래스 메서드이다.일반적으로, Java를 공부할 때 객체의 생성을 위해 `new` 키워드를 사용한다. 그렇다면 어떻게 메서드를 이용해서 객체를 만들 수 있을까?`new`를 직접적으로 사용하지 않을 뿐, 정적 팩토리 메서드라는 클래스 내에 선언되어 있는 메서드를 내부의 `new`를 이용해 객체를 생성하여 반환하는 것이다.정적 팩토리 ..
[Java] 비교를 위한 인터페이스 : Comparable과 Comparator 들어가며자바를 주언어로 변경하면서, 코딩테스트에 임할 때 내가 가장 어려워한 부분이다.PriorityQueue에 객체를 넣었을 때 특정 기준에 대해 "비교"하고 싶을 때, Python을 람다식을 사용해 간단하게 해결했었는데Java의 경우 Comparable? Comparator? 여러 코드들을 응용했고 비슷비슷하게 생긴 표현식에 IDE의 도움 없이는 구현하기 어려웠기에 시간이 있을 때 정리를 해두려고 한다.  인터페이스일종의 추상 클래스클래스들이 필수로 구현해야 하는 추상 자료형 사용을 강제하거나, 인터페이스의 추상메서드를 사용하도록 하여, 각 클래스들의 변경을 용이하게 대처한다.Comparable과 Comparator 모두 객체를 비교 목적의 인터페이스이다.따라서, 인터페이스 내에 선언된 메서드를 Ov..
SSAFY 10기를 수료하며 2024.06.25일을 기준으로 삼성청년 SW 아카데미 10기를 수료했다.수료를 기념하면서, 지난 1년 간 생각과 감정의 변화를 솔직하게 정리해보고자 한다.   지원 배경 먼저, 나는 백엔드 개발 경험이 없었다. 학부 시절 인공지능 위주의 수업을 듣다보니 소프트웨어 기초 지식이 부족했다.이후 1년동안 스타트업에서 데이터 엔지니어링 팀에서 근무했었고, 데이터 엔지니어로의 커리어를 희망해왔다.회사 내에서 많은 개발자들을 만나면서, 부족한 CS 지식이 부끄러웠고 추출 이상의 업무 기회를 만들지 못한 것이 스스로 역량 부족이라고 생각했다. 많은 고민 끝에 퇴사(계약 종료)를 하면서 시간을 갖고 부족한 부분을 채우고자 했다.사실 우연한 기회(?)에 회사를 다니게 된 것이라, 취업 준비를 제대로 해보지 않았기에 집..