본문 바로가기

분류 전체보기

(20)
[백준] 2638 - 치즈 (python) 문제N×M의 모눈종이 위에 아주 얇은 치즈가 과 같이 표시되어 있다. 단, N 은 세로 격자의 수이고, M 은 가로 격자의 수이다. 이 치즈는 냉동 보관을 해야만 하는데 실내온도에 내어놓으면 공기와 접촉하여 천천히 녹는다. 그런데 이러한 모눈종이 모양의 치즈에서 각 치즈 격자(작 은 정사각형 모양)의 4변 중에서 적어도 2변 이상이 실내온도의 공기와 접촉한 것은 정확히 한시간만에 녹아 없어져 버린다. 따라서 아래 모양과 같은 치즈(회색으로 표시된 부분)라면 C로 표시된 모든 치즈 격자는 한 시간 후에 사라진다.  와 같이 치즈 내부에 있는 공간은 치즈 외부 공기와 접촉하지 않는 것으로 가정한다. 그러므 로 이 공간에 접촉한 치즈 격자는 녹지 않고 C로 표시된 치즈 격자만 사라진다. 그러나 한 시간 후,..
ProcessBuilder, AWS S3를 통해 Web IDE 개발하기 구름톤 딥다이브 풀스택 과정을 진행하면서 코딩 과외용 Web IDE 플랫폼 개발 프로젝트를 진행하였다. 나는 해당 프로젝트에서 IDE 환경 구축 부분을 담당했는데, 프로젝트를 진행하면서 고민한 점을 공유하기 위해 글을 작성하게 되었다. 구현해야 할 기능은 크게 1. 코드 실행2. 코드 저장3. 코드 실시간 공유 이렇게 세가지가 있었다. 해당 게시글에서는 코드 실행/저장에 관한 내용만 다루고 코드 실시간 공유는 다음 게시물에서 다뤄보도록 하겠다. 코드 실행 코드를 실행하는 기능은 JAVA에서 외부 프로세스를 만들 수 있는 java.lang 패키지의 ProcessBuilder 클래스를 사용하였다.  private String runPython(String localFilePath, String input) ..
[백준] 2178 - 미로 탐색 (python) 문제N×M크기의 배열로 표현되는 미로가 있다.101111101010101011111011미로에서 1은 이동할 수 있는 칸을 나타내고, 0은 이동할 수 없는 칸을 나타낸다. 이러한 미로가 주어졌을 때, (1, 1)에서 출발하여 (N, M)의 위치로 이동할 때 지나야 하는 최소의 칸 수를 구하는 프로그램을 작성하시오. 한 칸에서 다른 칸으로 이동할 때, 서로 인접한 칸으로만 이동할 수 있다.위의 예에서는 15칸을 지나야 (N, M)의 위치로 이동할 수 있다. 칸을 셀 때에는 시작 위치와 도착 위치도 포함한다.입력첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다.출력첫째 줄에 지나야 하는 최소의 칸 ..
[백준] 1987 - 알파벳 (Python) 문제세로 R칸, 가로 C칸으로 된 표 모양의 보드가 있다. 보드의 각 칸에는 대문자 알파벳이 하나씩 적혀 있고, 좌측 상단 칸 (1행 1열) 에는 말이 놓여 있다.말은 상하좌우로 인접한 네 칸 중의 한 칸으로 이동할 수 있는데, 새로 이동한 칸에 적혀 있는 알파벳은 지금까지 지나온 모든 칸에 적혀 있는 알파벳과는 달라야 한다. 즉, 같은 알파벳이 적힌 칸을 두 번 지날 수 없다.좌측 상단에서 시작해서, 말이 최대한 몇 칸을 지날 수 있는지를 구하는 프로그램을 작성하시오. 말이 지나는 칸은 좌측 상단의 칸도 포함된다.입력첫째 줄에 R과 C가 빈칸을 사이에 두고 주어진다. (1≤𝑅,𝐶≤20) 둘째 줄부터 R개의 줄에 걸쳐서 보드에 적혀 있는 C개의 대문자 알파벳들이 빈칸 없이 주어진다.출력첫째 줄에 말이..
[백준] 1926 - 그림 (Python) 문제어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로로 연결된 것은 연결이 된 것이고 대각선으로 연결이 된 것은 떨어진 그림이다. 그림의 넓이란 그림에 포함된 1의 개수이다.입력첫째 줄에 도화지의 세로 크기 n(1 ≤ n ≤ 500)과 가로 크기 m(1 ≤ m ≤ 500)이 차례로 주어진다. 두 번째 줄부터 n+1 줄 까지 그림의 정보가 주어진다. (단 그림의 정보는 0과 1이 공백을 두고 주어지며, 0은 색칠이 안된 부분, 1은 색칠이 된 부분을 의미한다)출력첫째 줄에는 그림의 개수, 둘째 줄에는 그 중 가장 넓은 그림의 넓이를 출력하여라. 단, 그림이 하나도..
[백준] 11724 - 연결 요소의 개수 (python) 문제방향 없는 그래프가 주어졌을 때, 연결 요소 (Connected Component)의 개수를 구하는 프로그램을 작성하시오.입력첫째 줄에 정점의 개수 N과 간선의 개수 M이 주어진다. (1 ≤ N ≤ 1,000, 0 ≤ M ≤ N×(N-1)/2) 둘째 줄부터 M개의 줄에 간선의 양 끝점 u와 v가 주어진다. (1 ≤ u, v ≤ N, u ≠ v) 같은 간선은 한 번만 주어진다.출력첫째 줄에 연결 요소의 개수를 출력한다. 풀이 BFS 탐색을 통해 풀이했다. visited 배열을 방문했으면 pass, 방문하지 않았다면 해당 정점을 BFS 돌리고 연결요소를 하나 추가해주기  import sysfrom collections import dequeinput = sys.stdin.readlineN, M = map..
AWS EC2 - EC2에 프로젝트 배포하기 EC2에 프로젝트 배포하는 방법을 적어보려 한다. 지금 다루는 내용은 Docker와 CI/CD툴 없이 단순 EC2 내에서 빌드해 배포하는 내용을 다룬다. 배포는 보통 다음과 같은 순서로 진행된다.1. EC2에 접속2. JAVA 설치3. 프로젝트 클론4. 프로젝트 빌드5. 실행 처음부터 살펴보자 1. EC2에 접속 ssh -i "프로젝트 pem key" 사용자 이름@퍼블릭 DNS 명령어를 통해 접속 가능하다. 2. JAVA 설치 EC2 컴퓨터에 java를 설치해준다. sudo apt install openjdk-17-jdk  3. 프로젝트 클론 배포할 프로젝트를 클론해준다.git clone ${remote-repository}  4. 프로젝트 빌드 프로젝트를 빌드한다../gradlew build  5. 실..
Spring Boot - 외부 설정 파일과 프로필 관리 스프링 외부 설정 파일과 프로필 관리에 대해 자세히 알아보자 설정 파일 OS 환경 변수, 자바 시스템 속성, 커맨드 라인 옵션 인수는 사용해야 하는 값이 늘어날수록 사용하기가 불편해진다. 실무에서는 수십개의 설정값을 사용하기도 하므로 이런 값들을 프로그램을 실행할 때 마다 입력하게 되면 번거롭고, 관리도 어렵다. 그래서 나온 대안이 설정값을 파일에 넣어서 관리하는 방법이다. 그리고 애플리케이션 로딩 시점에 해당 파일을 읽어들이면 된다.  application.properties 또는 application.yml 라는 이름의 파일을 자바를 실행하는 위치에 만들어 두기만 하면 스프링이 해당 파일을 읽어서 사용할 수 있는 PropertySource 의 구현체를 제공한다.   하지만 각각의 서버에 각각 다른 설..
Spring Boot - 핵심 기능 스프링 부트의 핵심 기능을 설명하기 전에 간단하게 왜 Spring Boot가 등장했는지부터 알아보자! Spring Boot 등장 배경스프링의 생태계가 점점 커지면서 다양한 오픈 소스의 등장으로 수 많은 라이브러리를 함께 사용해야 하게 되었다.라이브러리를 사용할 때 필요한 설정이 점점 늘어나고 수많은 스프링 빈 등록을 해야했고 심지어 스프링 프로젝트를 시작하는 것 조차 설정이 너무 복잡해 최소한의 인간 개입으로 시작을 위한 설정 과정을 대신 해주는 Spring Boot가 등장하게 되었다.  Spring Boot 핵심 기능 스프링 부트 핵심 기능은 크게 다섯 가지가 있다. 1. WAS (Web Application Server) 과거에 자바로 웹 애플리케이션을 개발할 때는 먼저 서버에 톰캣 같은 WAS(웹 ..
Spring JPA (3) - 매핑 엔티티 매핑엔티티를 매핑할 때 사용하는 어노테이션들을 살펴보자객체와 테이블 매핑@EntityJPA에게 관리를 맡기기 위해서는 클래스에 @Entity 어노테이션을 붙여줘야한다.주의할 점은 다음과 같다.기본 생성자 필수 (Lombok의 @NoArgsConstructor 를 사용하면 자동으로 기본 생성자를 생성해준다)final 클래스, enum, interface, inner 클래스 사용 X저장할 필드에 final 사용 X@Table엔티티와 매핑할 테이블을 지정해준다.기본값은 엔티티 이름을 사용한다.속성으로는 name, catalog, schema, uniqueConstraints(DDL)이 있다.필드와 컬럼 매핑@Column@Enumerated자바 enum 타입을 매핑할 때 사용한다.@Temporal날짜 타..