본문 바로가기

전체 글310

[BOJ] 백준 16236번: 아기 상어 (골드4) 문제 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수이다. 가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다. 아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있다. 아기 상어는 자신의 크기보다 작은 물고기만 먹을 수 있다. 따라서, 크기가 같은 물고기는 먹을 수 없지만, 그 물고기가 있는 칸은 지나갈 수 있다. 아기 상어가 어디로 이동할지 결정하는 방법은 아래와 같다. 더 이상 먹을 수 있는 물고기가 공간에 없다면 아기 상어는 엄마.. 2022. 1. 3.
[BOJ] 백준 15686번: 치킨 배달 문제 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸, 왼쪽에서부터 c번째 칸을 의미한다. r과 c는 1부터 시작한다. 이 도시에 사는 사람들은 치킨을 매우 좋아한다. 따라서, 사람들은 "치킨 거리"라는 말을 주로 사용한다. 치킨 거리는 집과 가장 가까운 치킨집 사이의 거리이다. 즉, 치킨 거리는 집을 기준으로 정해지며, 각각의 집은 치킨 거리를 가지고 있다. 도시의 치킨 거리는 모든 집의 치킨 거리의 합이다. 임의의 두 칸 (r1, c1)과 (r2, c2) 사이의 거리는 |r1-r2| + |c1-c2|로 구한다. 예를 들어, 아래와 같은 지.. 2022. 1. 2.
[Spring Boot] Web server failed to start. Port 8080 was already in use. 오류 내용 Description: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that's listening on port 8080 or configure this application to listen on another port. 해결방법 1. 어플리케이션 속성을 추가합니다. resources 안에 들어 있는 application.properties를 열고 안에 server.port=(원하는 포트번호)를 입력해주면 쉽게 해결됩니다. 2. 해당 포트를 사용 중인 프로세스를 종료해주면 됩니다. https://stackoverflow.com/questions/34253779/tom.. 2021. 12. 29.
Singleton 패턴 활용! 싱글톤 패턴이란 클래스의 인스턴스가 딱 1개만 생성되는 것을 보장하는 디자인 패턴입니다. 위의 그림과 같이 보통 웹 애플리케이션은 여러 클라이언트로 부터 동시에 요청이 들어오곤 합니다. 예를 들어 배달을 주문 하는 경우 배달앱에서는 여러 유저가 동시에 배달을 주문하기 때문에 결제서비스가 새롭게 생성되면 메모리가 낭비가 심할 뿐더러 문제가 생길 수도 있습니다. 따라서 이러한 현상을 해결하기 위해 해당 객체를 딱 한개만 공유하도록 설계한 것이 싱글톤 패턴입니다. 위의 그림이 싱글톤 패턴을 적용하여 하나의 인스턴스만을 생성하고 전달하는 것입니다. 1. Eager Initialization public class SingletonPattern { // 1. static 영역에 객체를 1개만 생성합니다. priv.. 2021. 12. 24.
한성프렌즈! 나의 성격에 맞는 한성프렌즈 캐릭터를 알아보자! 저는 현재 한성대학교 재학중입니다. 이번에 저는 동아리 학우분들과 함께 한성대학교 마스코트들인 한성부기와 한성캐릭터들을 이용해서 만들어봤는데요! 귀여운 캐릭터들을 활용해서 우리 학교 캐릭터들이 들어가있는 MBTI같은 성격유형검사를 해보면 어떨까?라는 생각에서 만들게 되었습니다! 이렇게 구글 플레이스토어에도 등록을 해놨습니다. 사실 이 앱은 21년 7월에 만들었는데 제가 블로그를 시작한지 얼마 안되어 이제서야 작성하게 되었습니다! 구성은 굉장히 간단하게 되어있으며 사용자가 친근함을 느낄 수 있게 최대한 디자인적인 측면에 집중을 하였으며 지문을 클릭하였을 때 지문의 색이 바뀌거나 로딩하는 것에 있어 UI적으로 불편함을 느끼지 않게끔 적용하였습니다. 사람들에게 접근성이 좋게 끔 귀엽게 만든 것이 특징이지만 개.. 2021. 12. 24.
백준 / BOJ / 11723 / 집합 문제 비어있는 공집합 S가 주어졌을 때, 아래 연산을 수행하는 프로그램을 작성하시오. add x: S에 x를 추가한다. (1 ≤ x ≤ 20) S에 x가 이미 있는 경우에는 연산을 무시한다. remove x: S에서 x를 제거한다. (1 ≤ x ≤ 20) S에 x가 없는 경우에는 연산을 무시한다. check x: S에 x가 있으면 1을, 없으면 0을 출력한다. (1 ≤ x ≤ 20) toggle x: S에 x가 있으면 x를 제거하고, 없으면 x를 추가한다. (1 ≤ x ≤ 20) all: S를 {1, 2, ..., 20} 으로 바꾼다. empty: S를 공집합으로 바꾼다. 입력 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 .. 2021. 12. 22.
[프로그래머스][Java] x만큼 간격이 있는 n개의 숫자 문제 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. 제한 조건 x는 -10000000 이상, 10000000 이하인 정수입니다. n은 1000 이하인 자연수입니다. 입출력 예 2 5 [2,4,6,8,10] 4 3 [4,8,12] -4 2 [-4, -8] 이 문제를 해결하실 때 sum이라는 변수를 선언해서 지속적으로 sum 값에 더하는 방식으로 구현하셔도 좋지만 간단하게 x * (i+1)이라는 문장 하나로 해결이 되기 때문에 아래의 방식도 추천드립니다. 다만 long범위를 생각해주셔야 하기에 x를 long으로 형변환해주셔야 합니다. Java.. 2021. 12. 22.
객체 지향 설계 5가지 원칙: SOLID SRP: 단일 책임 원칙 (Single Responsibility Principle) OCP: 개방-폐쇄 원칙 (Open/Closed Principle) LSP: 리스코프 치환 원칙 (Liskov Substitution Principle) ISP: 인터페이스 분리 원칙 (Interface Segregation Principle) DIP: 의존관계 역전 원칙 (Dependency Inversion Principle) SRP 단일 책임 원칙 (Single Responsibility Principle) - 한 클래스는 하나의 책임만 가져야 합니다. - SRP에서 말하는 책임의 기본 단위: 객체 - 책임이란 객체가 수행하는 활동이라고 해석할 수 있습니다. public class Professor { public.. 2021. 12. 20.
백준 / BOJ / 10799 / 쇠막대기 문제 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저의 배치는 다음 조건을 만족한다. 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있다. - 쇠막대기를 다른 쇠막대기 위에 놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓는다. 각 쇠막대기를 자르는 레이저는 적어도 하나 존재한다. 레이저는 어떤 쇠막대기의 양 끝점과도 겹치지 않는다. 아래 그림은 위 조건을 만족하는 예를 보여준다. 수평으로 그려진 굵은 실선은 쇠막대기이고, 점은 레이저의 위치, 수직으로 그려진 점선 화살표는 레이저의 발사 방향이다. 이러한 레이저와 쇠막대기의 배치는 다음과 같이 괄호를 이용하여.. 2021. 11. 19.