일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 백준 11659
- MySQL
- 백준
- 알고리즘
- Spring MVC 동작원리
- vm인스턴스생성
- Spring Web MVC
- 성능테스트툴
- 코드스테이츠
- OOP
- 인텔리제이
- String.valueOf()
- GCP
- 구간합구하기
- 11659
- Array.asList
- 재귀와반복문
- 프로그래머스
- 코딩테스트
- 싱글톤패턴
- List.of
- 재귀함수
- 클라우드에서 도커 실행하기
- 자바
- java
- 버블정렬
- 투포인터알고리즘
- Spring MVC 구성요소
- 코드스테이츠 백엔드
- 스택
- Today
- Total
목록글 전체 보기 (242)
순간을 기록으로
1. Compute Engine > VM 인스턴스 누르기 2. 결제 사용 설정 누르기(최초의 경우) 3. 'My First Project' 프로젝트의 결제 계정 설정 팝업에서 계정 설정 누르기(최초의 경우) 기다리면 컴퓨터 엔진을 사용할 준비가 됩니다. 4. 인스턴스 만들기 누르기 5. 생성할 인스턴스 설정하기 이름: 인스턴스 이름을 지정합니다. 기본적으로 instance-1~5 이런 식으로 지정됩니다. 기본으로 하겠습니다. 라벨: 인스턴스가 어떤 성격의 인스턴스인지 구분해주는 값입니다. 리전(region): 인스턴스가 위치할 특정한 지리적인 위치를 지정합니다. 실제로 인스턴스 해당 지역에 설치됩니다. 기본으로 하겠습니다. 영역(area): 각각 물리적으로 구분된(떨어진) 영역을 의미합니다. 한 리전 안..
문제 풀이 두 개의 배열이 주어지고 인덱스를 활용해서 풀 수 있는 문제이므로 투포인터 알고리즘을 사용하는 문제입니다. 투 포인터 알고리즘을 사용하라면 두 배열이 주어지고 정렬이 되어있어야 합니다. 이번 문제는 정렬이 되어있지 않아서 정렬을 해야 합니다. - 두 인덱스가 유효한 상태에서 반복을 계속합니다 - 만약 해당 인덱스의 두 원소가 값이 같으면 리스트에 넣고 두 인덱스 값을 1 증가합니다. - 만약 A배열의 원소가 더 크면 두 번째 배열의 인덱스를 1 증가시킵니다. - 만약 B배열의 원소가 더 크면 첫 번째 배열의 인덱스를 1 증가시킵니다. 이미 정렬을 한 상태이므로 리스트에는 오름차순으로 저장되어 있습니다. 따라서 반환만 해주면 됩니다. import java.util.ArrayList; import..
문제 풀이 단순하게 푼다면 두 배열을 입력받고 두 배열을 합친 다음에 정렬한 결과를 리턴할 수 있다. 하지만 이렇게 할 경우 시간 복잡도가 O(nlong)이 최선(퀵정렬)이다. 투 포인터 알고리즘을 사용한다면 시간 복잡도를 O(n)까지 낮출 수 있다. /* * 투포인터 알고리즘 --> 정렬(nlogn)보다 더 빠르다 O(n) * 정렬의 경우 빨라 봐야(퀵정렬) O(nlogn)인데 투포인터 알고리즘을 사용하면 O(n)으로 낮출 수 있다. * 두 개의 포인터를 사용해서 배열의 원소에 접근하는 알고리즘 * 포인터 역할을 하는 인덱스 변수 두 개를 선언해서 푼다. * * p1과 p2를 0으로 초기화한다. * * - p1
문제 풀이 알고리즘을 간소화하면 다음과 같다. /* * N개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 수를 출력하는 프로그램을 작성하세요. * - n개의 자연수를 순차적으로 접근합니다. * - 자연수를 의 값을 뒤집습니다. * - 뒤집은 자연수가 소수인지 판별합니다. * - 소수이면 리스트에 담습니다. * */ 자연수 값을 뒤집기와 소수를 판별하는 task의 경우 함수로 따로 만들어 가독성을 올렸습니다. import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); i..
문제 풀이 1 - 사용한 문자를 기록하기 앞에서 사용했던 문자들을 기록할 배열을 만들고 새로운 문자들을 붙일 때 앞에서 나온 적이 있는지 검사하는 알고리즘입니다. import java.util.ArrayList; import java.util.Scanner; /* * 소문자 한 개 문자열이 입력되면 중복된 문자가 제거되고, 순서를 유지하는 문자열을 출력하세요. * - 문자열을 각 문자씩 앞에서부터 접근합니다. * - 문자에 접근하고 앞에서 나온적이 있는지 검사합니다. * - 나온적이 없으면 문자를 붙이고, 나온적이 있으면 통과합니다. * */ public class Main { public static String solution(String str) { ArrayList usedLetters = new..
문제 풀이 1 - 시간 초과 (직관적인 방법) 소수란 1과 자기 자신으로만 나누어 떨어지는 수입니다.(=다른 수 나머지 연산을 했을 경우에 나머지가 0이 나오면 안 되는 수) 숫자 x를 소수인지 확인하려면, 2부터 x/2까지 수로 나머지 연산을 시도해서 나누어 떨어지는 지 검사하면 됩니다. 나누어 떨어지면 소수가 아닙니다. /* * N을 입력하면 1부터 N까지 수 중 소수의 갯수를 출력하는 문제 * * * */ import java.util.Scanner; public class Main { public static int solution(int n) { int count = 0; for (int i=2; i
문제 풀이 항 수를 입력하면 그만큼의 항을 가지는 피보나치수열을 출력하는 문제입니다. 피보나치 수열이란 앞선 두 개의 항을 더해서 새로운 항의 값을 가지는 수열입니다. 그렇기 때문에 첫 항과 두 번째 항의 값을 설정해 주어야 합니다. 소스코드 /* * 항 수를 입력하면 그만큼의 항 수를 가지는 피보나치 수열을 출력하세요. * */ import java.util.Scanner; public class Main { public static int[] solution(int n) { int[] fibo = new int[n]; // 초깃값 설정 fibo[0] = 1; fibo[1] = 1; // 현재 원소 값 = 앞의 두 원소 값의 합 for (int i=2; i
문제 풀이 가위바위보를 할 경우 상황은 크게 3가지로 나눌 수 있습니다. 1.A가 이긴 경우 2.B가 이긴 경우 3. 무승부인 경우 A가 낼 수 있는 경우의 수는 3가지이고 B도 마찬가지 이므로 총 9가지 경우의 수가 나올 수 있습니다. 그리고 이 9가지 경우의 수를 3으로 나누면 각각의 상황마다 경우의 수는 3가지입니다. 가위, 바위, 보를 숫자 1,2,3으로 매핑하여 문제를 풀지만 가독성을 올리기 위해 대문자로 지어진 상수를 만들었습니다. 소스코드 import java.io.IOException; import java.util.Scanner; /* * - n 횟수만큼 반복합니다. * - 만약 A가 이긴다면 'A'를 배열에 담습니다. * - A(가위,1)이고 B(보,3) 일 때 * - A(바위,2)이고..