[백준] 1138. 한 줄로 서기
·
카테고리 없음
문제https://www.acmicpc.net/problem/1138풀이import java.util.*;import java.io.*;class Main { static int N; static int[] number; public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; N = Integer.parseInt(br.readLine()); number = new int[N + 1]; ArrayList lis..
[백준] 14501. 퇴사
·
코딩테스트/백준
문제https://www.acmicpc.net/problem/14501첫 번째 풀이import java.util.*;import java.lang.*;import java.io.*;class Main { static int N; static int job[][]; static int answer; public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st; N = Integer.parseInt(br.readLine()); ..
[백준] 1920. 수 찾기
·
코딩테스트/백준
문제 N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들이 A안에 존재하는지 알아내면 된다. 모든 정수의 범위는 -231 보다 크거나 같고 231보다 작다. 출력 M개의 줄에 답을 출력한다. 존재하면 1을, 존재하지 않으면 0을 출력한다.  [풀이]처음 시도할 때, List의 contains 메소드를 활용해 풀려고 했다. 하지만 시간초과가 떴고.. 이진탐색을 사용했다. 먼저 값..
[Git] GitLab과 SourceTree를 활용한 Eclipse 프로젝트 커밋 방법
·
잡다한 개발지식
1. 프로젝트 생성 및 Clone 먼저 테스트용 레포지토리를 생성해주자.  Clone할 폴더에 들어간 뒤, 주소를 텍스트로 복사해준다.  cmd 창을 키고, 복사한 주소로 `cd {이동할 경로}` 를 통해 이동한다.  아까 생성한 Gitlab 레포지토리로 가서, Code를 누르고 HTTPS 주소를 복사한다. git clone https://{your_git_link} 다시 cmd 창으로 가서 위 명령어를 통해 git clone을 해주면,  Gitlab 레포지토리와 연동된 폴더가 만들어진다.2. SourceTree 설정 이제 SourceTree로 이동해서 Clone 받아온 폴더와 연동을 해줘야 한다. Add를 눌러준 뒤, 탐색을 눌러 로컬에 있는 폴더와 연동을 해준다.  성공적으로 SoureTree에 연동..
[백준] 11659. 구간 합 구하기4
·
코딩테스트/백준
문제 수 N개가 주어졌을 때, i번째 수부터 j번째 수까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j가 주어진다. 출력 총 M개의 줄에 입력으로 주어진 i번째 수부터 j번째 수까지 합을 출력한다. 제한 1 ≤ N ≤ 100,000 1 ≤ M ≤ 100,000 1 ≤ i ≤ j ≤ N예제 입력 1  5 3 5 4 3 2 1 1 3 2 4 5 5예제 출력 1  12 9 1 풀이일반 list와, 구간 합을 구하기 위한 합 배열을 저장할 prefixList를 만들어주었다. prefix에 list의 첫 번째 값을..
[알고리즘] 구간합
·
알고리즘
구간 합이란?`구간 합(Prefix Sum)`은 배열에서 특정 구간의 합을 효율적으로 계산하기 위해 사용하는 알고리즘이다.구간 합의 핵심 이론구간 합 알고리즘을 사용하기 위해서는 먼저 `합 배열`을 구해야 한다. 배열 A가 있을 때 합 배열 S는 다음과 같이 정의한다.합 배열 S 정의S[i] = A[0] + A[1] + A[2] + ... + A[i-1] + A[i] //A[0]부터 A[i]까지의 합  합 배열은 기존의 배열을 전처리한 배열이라 생각하면 된다. 합 배열을 미리 구해놓으면, 기존 배열의 일정 범위의 합을 구하는 시간 복잡도가 `O(N)`에서 `O(1)`로 감소한다. 합 배열은 어떻게 만들까?합 배열 S를 만드는 공식S[i] = S[i-1] + A[i] 이렇게 구현된 합 배열을 이용하면 구간..
[백준] 1546. 평균
·
코딩테스트/백준
문제 세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다. 예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다. 세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다. 출력 첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대..
[SWEA] (D3) 1215. [S/W 문제해결 기본] 3일차 - 회문1
·
코딩테스트/SWEA
"기러기", "토마토", "스위스"와 같이 똑바로 읽어도 거꾸로 읽어도 똑같은 문장이나 낱말을 회문(回文, palindrome)이라 한다.8x8 평면 글자판에서 제시된 길이를 가진 회문의 개수를 구하라.위와 같은 글자판이 주어졌을 때, 길이가 5인 회문은 붉은색 테두리로 표시된 4개이므로 4를 반환하면 된다.[제약 사항]각 칸의 들어가는 글자는 'A', 'B', 'C' 중 하나이다.ABA도 회문이며, ABBA도 회문이다. A 또한 길이 1짜리 회문이다.가로 또는 세로로 이어진 회문의 개수만 센다.아래 그림에서 노란색 경로를 따라가면 길이 7짜리 회문이 되지만 직선이 아니기 때문에 인정되지 않는다.[입력]총 10개의 테스트 케이스가 주어진다. 각 테스트 케이스의 첫 번째 줄에는 찾아야 하는 회문의 길이가 ..
[SpringBoot] MSA 구조 구현에 필요한 기술들
·
SpringBoot
모놀리식 구조로 구현한 SpringBoot 프로젝트를 MSA 구조로 리팩토링하게 되었다. 그 과정에서 어떤 기술들이 필요했는지에 작성해보겠다.MSA란?`Microservices Architecture`의 약자로, 마이크로서비스 아키텍처를 의미한다.  이는 소프트웨어 개발에서 시스템을 여러 개의 독립적인 서비스들로 구성하는 접근 방식을 말한다. 각 서비스는 특정한 기능을 수행하며, 서로 독립적으로 배포, 확장 및 관리될 수 있다. MSA의 특징1. 독립적인 배포: 각 서비스는 독립적으로 배포될 수 있으며, 이는 시스템의 다른 부분에 영향을 미치지 않고도 개별 서비스를 업데이트하거나 확장할 수 있게 한다. 2. 독립적인 확장: 특정 서비스에 대한 수요가 증가하면, 해당 서비스만 확장할 수 있어 리소스를 효율..
[SpringBoot] AWS EC2, Nginx를 사용한 SpringBoot 서버 리버스 프록시 설정
·
SpringBoot
이번에는 Nginx를 사용해서 간단하게 배포한 스프링부트 서버의 리버스 프록시 설정을 해보겠다. AWS EC2 프리티어 인스턴스 두 개를 사용해서 실습하였다. 스프링부트는 ubuntu 인스턴스, Nginx는 Amazon Linux 인스턴스이다. 먼저 Nginx에 대해 알아보도록 하자.Nginx란?Nginx는 높은 동시 접속 처리에 특화된 비동기 이벤트 기반 구조의 웹 서버 소프트웨어다.  처음에는 웹 서버로 개발되었지만, 이후에는 리버스 프록시, 메일 프록시, 범용 TCP/UDP 프록시 등으로 활용될 수 있게 확장되었다. Nginx는 동시 접속 처리 성능이 뛰어나며, 다양한 모듈을 통해 기능을 확장할 수 있다.  또한, Apache 웹 서버와 같이 널리 사용되며, 특히 동적 콘텐츠가 적고, 정적 콘텐츠의..