일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- vm인스턴스생성
- 프로그래머스
- 알고리즘
- 재귀와반복문
- String.valueOf()
- 11659
- 구간합구하기
- 클라우드에서 도커 실행하기
- Spring MVC 구성요소
- 자바
- GCP
- 백준 11659
- 백준
- 코딩테스트
- Spring Web MVC
- 성능테스트툴
- 스택
- 재귀함수
- Spring MVC 동작원리
- MySQL
- 버블정렬
- 코드스테이츠 백엔드
- 인텔리제이
- 싱글톤패턴
- OOP
- 코드스테이츠
- List.of
- 투포인터알고리즘
- Array.asList
- java
- Today
- Total
목록글 전체 보기 (242)
순간을 기록으로
문제 숫자 N을 입력하면 원소의 갯수가 N개인 피보나치 수열을 출력하는 프로그램을 작성하세요 풀이1 - 재귀함수 이용하기 피보나치는 바로 앞 두 원소를 더해서 새로운 원소값을 설정합니다. 식으로 표현하면 다음과 같습니다. f(n) = f(n-2) + f(n-1) (단, n>=2, f(1)=1, f(2)=1) 따라서 첫 번째 원소나 두 번째 원소라면 재귀를 탈출하고 그게 아니라면 앞 두 원소를 더하는 과정으로 문제를 풀면 됩니다. 재귀함수는 보통 if-else구문으로 푸나 여기서는 if-elseif-else 구조로 문제를 풀겠습니다. 두 조건을 합춰 if-else로 만들어도 상관은 없습니다. import java.util.Scanner; public class Main { public static int ..
문제 자연수 N을 입력하면 N!(팩토리얼)을 구하는 프로그램을 작성하세요 풀이 팩토리얼은 다음과 같습니다 5! = 5*4! = 5*4*3! =5*4*3*2! =5*4*3*2*1! =5*4*3*2*1*0! 0!은 1과 같으므로 결국 5!은 5*4*3*2*1과 같습니다. 구조를 보면 같은 과정이 반복되고 있음을 알 수 있습니다. 따라서 재귀함수로 팩토리얼 값을 구할 수 있습니다. 따라서 재귀함수안에 if-else 구조를 가지고 문제를 풀 수 있습니다. import java.util.Scanner; public class Main { public static int recursion(int n) { if (n==0) { // 0!이면 탈출 return 1; } else { return n * recursion..
문제 10진수 N이 입력되면 2진수로 변환하여 출력하는 프로그램을 작성하세요. 단 재귀함수를 이용해야 합니다. 풀이 십진수를 이진수로 바꾸는 방법은 N을 2로 계속나누면서 몫과 나머지를 구하면 됩니다. 그리고 몫이 0이 될 때 구했던 나머지를 역순으로 붙이면 구하는 이진수가 나오게 됩니다. 위의 십진수 69를 계속 나눕니다. 그리고 몫이 0이 되면 지금까지 구한 이진수를 역순으로 이어붙입니다. 따라서 십진수 69의 이진수는 1000101이 됩니다. 이번 문제도 재귀함수를 이용하기 때문이 if-else 구조를 이용해서 문제를 풀겠습니다. package 인프런.재귀와트리와그래프.이진수출력.방법1; import java.util.Scanner; public class Main { static StringBui..
문제 자연수 N을 입력하면 재귀함수를 이용하여 1부터 N까지를 출력하는 프로그램을 작성하세요 풀이 재귀 함수를 이용해서 1부터 N까지 출력하면 문제를 해결할 수 있습니다. 재귀함수는 함수의 정의 안에서 다시 자기 자신(함수)을 사용합니다. 예를 들면 다음과 같습니다. f(n) = f(n-1) + 1. 재귀함수는 계속해서 자기 자신을 호출합니다. 그렇기 때문에 탈출 조건을 작성하지 않으면 무한루프에 빠져 스택오버플로우가 발생합니다. 스택에 저장된 호출함수의 정보가 끊임없이 생성되어 stack(스택에는 각 호출(스택프레임)마다 복귀주소, 지역변수, 매개변수가 누적됩니다)이 넘치기 때문입니다. 그렇기 때문에 재귀함수는 반드시 탈출조건을 작성해야 합니다. 재귀함수는 크게 다음과 같은 if-else 구조를 가집니..
문제 풀이 정렬 기준은 다음과 같다 화학과 물리학을 가장 마지막으로 정렬한다. subject로 정렬한다 name으로 정렬한다 SELECT winner, subject FROM nobel WHERE yr=1984 ORDER BY subject IN ('Physics','Chemistry'), subject, winner
문제 풀이 이름(문자열)안에 single quote가 있을 때, 이 문자를 단순히 일반문자로만 취급하고 싶다면 앞에 singgle quote를 한번 더 작성하면 된다. select * from nobel where winner = 'EUGENE O''NEILL';
오버 라이딩(Overriding) 정의와 필요성 오버 라이딩은 조상클래스로부터 상속받은 메소드의 내용을 변경하는 것을 말합니다. 상속받은 메소드를 그대로 사용하는 경우도 있지만, 때에 따라서는 자손 클래스에 맞게 내용을 재정의할 필요가 있습니다. class Point { int x; int y; String getLocation() { return "x: " + x + ", y: " + y; } } class Point3D extends Point { int z; @Override String getLocation() { return "x: " + x + ", y: " + y + ", z: " + z; } } 위의 예시는 Point 클래스의 getLocation() 함수를 Point3D에서 오버라이딩한 ..
개요 배포를 공부하면서 클라우드를 사용하게 되었고 기본적인 개념이 필요해서 작성하게 되었습니다. 용어 정리 가상화(virtualization): 소프트웨어를 사용해서 한 컴퓨터 안에 있는 하드웨어 자원(cpu, 메모리, 스토리지 등)을 가상머신(VM,가상서버)이라고 불리는 다수의 가상 컴퓨터에게 분할해서 나누어 줄 수 있도록 하기 위해, 컴퓨터 하드웨어에서 추상화 계층을 만드는 것. 실제 기반 컴퓨터 하나만 실행되지만, 각각의 vm에서 운영체제를 실행하여 마치 여러 대의 컴퓨터가 동작하는 것 처럼 만들 수 있다. 결국 가상화의 목적은 물리적인 하드웨어 자원을 효율적으로 사용해서 하드웨어 ROI(투자 수익율)을 올릴 수 있습니다. 오늘날 가상화 기술을 사용하는 클라우드 제공자(aws, gcp)는 물리적 컴..