ajy7424의 등록된 링크

 ajy7424로 등록된 네이버 블로그 포스트 수는 228건입니다.

VirtualBox에 Ubuntu 20.04 설치하기 [내부링크]

1. 아래 링크에서 VirtualBox 다운로드! https://www.virtualbox.org/wiki/Downloads 2. Ubuntu 20.04.3 LTS 다운로드 클릭(ISO파일-디스크 이미지, CD라고 생각하면 편하다^_^) http://www.ubuntu.com/download/desktop 3. VirtualBox에서 가상머신을 만들어줍니다 새로만들기 클릭!! 4. 이름과 종류, 버전을 선택후 다음 ㄱㄱ 5. 메모리도 적당히 설정해주세요 적당히 크케 해야 나중에 문제 안 생겨용 6. 지금 새 가상디스크 만들기 선택 7. VirtualBox 디스크이미지 선택 8. 동적할당 고정할당 중 선택, 처음에 고정할당으로 했다가 메모리가 다차서 중간에 동적 할당으로 바꿨다. 번거롭지 않게 동적할당 추천 9. 디스크 크기 설정은 디폴트.......

APM이란? APM 설치 순서, 소스설치 하는 이유 [내부링크]

APM이란 웹 서버 구현을 위해 사용하는 Apache, PHP, MySQL 3가지가 연동되어 운영되도록 만든 환경이다. 각각 독립된 프로젝트이지만 서로간의 호환성이 우수해 전통적인 서버 개발에 사용된다. Apache(웹서버) → 웹 서비스를 제공해주는 서버 PHP(Backend Language) → 사용자가 보는 웹 페이지를 구성하는 언어, 서버에서 해석하여 HTML 코드로 만들어서 브라우저에 전달한다. MySQL(DBMS) → 데이터베이스 서버, 웹페이지에서 데이터와 연동된 결과를 보여주기 위해 사용한다. APM 구동방식 APM 설치순서 apache - mysql -php 또는 mysql - apache - php 순서로 설치해야 한다. php 설치 시에 apache 및 mysql 관련 설정이 들어가기 때문이.......

[Ubuntu 20.04 Apache 소스설치] 우분투 20.04에 apache(아파치) 설치하기 [내부링크]

소스 설치 관례 1. /usr/local에 설치한다. 2. 소스파일을 내려받는다. 3. ./configure로 설정을 한다. 4. make로 컴파일을 한다. 5. make install로 설치한다. configure : 소스파일에 대한 환경설정을 해주는 명령어, 서버 환경에 맞게 makefile을 생성, 컴파일에 필요한 시스템 파일들은 어디에 위치해 있으며 어떤곳에 설치하겠다고 지정하는 것 make : 소스를 컴파일(소스파일을 사용자가 실행 가능한 파일로 만들어줌) 하는 것 make install : make를 통해 만들어진 설치파일 설치 apache 설치를 위해서는 apr, apr-util, pcre를 별도로 설치해야한다. 1. 사전 세팅 sudo su : 관리자로 전환 cd : 특정 디렉토리 이동 2. 필수 패키지 설치.......

[Ubuntu 20.04 mysql 소스설치] 우분투 20.04에 mysql 설치하기 [내부링크]

소스 설치 관례 1. /usr/local에 설치한다. 2. 소스파일을 내려받는다. 3. ./configure로 설정을 한다. 4. make로 컴파일을 한다. 5. make install로 설치한다. configure : 소스파일에 대한 환경설정을 해주는 명령어, 서버 환경에 맞게 makefile을 생성, 컴파일에 필요한 시스템 파일들은 어디에 위치해 있으며 어떤곳에 설치하겠다고 지정하는 것 make : 소스를 컴파일(소스파일을 사용자가 실행 가능한 파일로 만들어줌) 하는 것 make install : make를 통해 만들어진 설치파일 설치 1. 필수 패키지 설치 2.MySQL 다운로드 및 설치 https://dev.mysql.com/downloads/mysql/ 위 사이트에서 최신버전 확인 후 설치하자~! (최신 버전으로 설치 안.......

[Ubuntu 20.04 php 소스설치] 우분투 20.04에 php 설치하기 [내부링크]

소스 설치 관례 1. /usr/local에 설치한다. 2. 소스파일을 내려받는다. 3. ./configure로 설정을 한다. 4. make로 컴파일을 한다. 5. make install로 설치한다. configure : 소스파일에 대한 환경설정을 해주는 명령어, 서버 환경에 맞게 makefile을 생성, 컴파일에 필요한 시스템 파일들은 어디에 위치해 있으며 어떤곳에 설치하겠다고 지정하는 것 make : 소스를 컴파일(소스파일을 사용자가 실행 가능한 파일로 만들어줌) 하는 것 make install : make를 통해 만들어진 설치파일 설치 1. 필수 패키지 설치 libsqlite3-dev를 libsqlite-dev으로 설치해서 나중에 오류가 났다 ㅎㅎ 2. PHP 다운로드 및 설치 https://www.php.net/downloads.php 위.......

[JAVA/자바] 백준 2133번: 타일 채우기 [내부링크]

문제 우선 N = 2일때의 경우를 생각해보았다. 총 세가지의 경우의 수가 나온다. 즉 dp[2] = 3 N = 3일 때는 타일을 채울 수 없다. 즉 홀수 일때는 경우의 수 0 N = 4일 때를 생각해보면 길이를 2:2 나눴을 때 왼쪽에 3가지, 오른쪽에 3가지 경우의 수가 나온다. N = 4일때는 위와 같은 경우의 수도 추가되기 때문에 두가지의 경우가 추가된다. 즉 dp[4] = dp[2] * dp[2] + 2 = dp[2] * 3 + 2로 표현 가능 그렇다면 N = 6일 때는? 이쯤 되면 어느정도 규칙이 보인다. 6을 길이 4:2로 나눴을 때 왼쪽 영역에서 dp[4]만큼의 경우의 수가 나오고 오른쪽은 dp[2]만큼의 경우의 수가 나온다. 길이를 2:4로 나.......

[JAVA/자바] 백준 13398번: 연속합2 [내부링크]

문제 연속합 문제의 업그레이드 버전이다. 알듯 말듯했지만 결국은 풀이를 참고했던^^,, 이 문제는 두가지의 경우로 나누어 풀어야한다. 1. 수를 제거하지 않는 경우 dp[i][0] 2. 수를 하나 제거하는 경우 dp[i][1] 1의 경우는 연속합에서 풀었던대로 풀면된다. 2의 경우가 관건인데 현재 수를 삭제할 것인지, 아니면 이전에 수를 삭제했는지로 나뉜다. 현재 수를 삭제할 것이라면 이전에 삭제 내역이 없는 dp[i-1][0]을 채택해야한다. 현재 수를 삭제하지 않는다면 이전에 삭제 내역이 있는 dp[i-1][1]을 채택한다. 즉 dp[i][1] = Math.max(dp[i-1][0], dp[i-1][1] + 현재 수)로 표현할 수 있다. 이제 여기서 최대값을 구하면 끝! 풀이 htt.......

[자바/java] JVM은 무엇이며 자바 코드는 어떻게 실행하는 것인가 #1 | JVM이란, 컴파일 및 실행방법, 바이트코드, JIT컴파일러, JDK와 JRE [내부링크]

JVM이란 무엇인가 JVM은 'Java virtual machine'을 줄인 것으로, '자바를 실행하기 위한 가상 컴퓨터'이다. 자바로 작성된 애플리케이션은 모두 이 가상 컴퓨터(JVM)에서만 실행되기 때문에 자바 애플리케이션이 실행되기 위해 반드시 JVM이 필요하다. 일반 애플리케이션의 코드는 OS만 거치고 하드웨어로 전달되는데 비해 Java애플리케이션은 JVM을 한 번 더 거치기 때문에, 속도가 느리다. 요즘엔 바이트코드(컴파일된 자바코드)를 하드웨어의 기계어로 바로 변환해주는 JIT컴파일러와 향상된 최적화 기술로 속도의 격차를 많이 줄였다. Java애플리케이션은 JVM하고만 상호작용을 하기 때문에 OS와 하드웨어에 독립적이다.......

[자바/java] 자바 데이터 타입, 변수 그리고 배열 #2 | 프리미티브 타입, 레퍼런스타입, 리터럴, 타입 변환, var [내부링크]

프리미티브 타입 종류와 값의 범위 그리고 기본 값 자료형이란 값의 종류에 따라 값이 저장될 공간의 크기와 저장형식을 정의한 것이다. 변수를 선언할 때 저장하려는 값의 특성을 고려하여 가장 알맞은 자료형을 변수의 타입으로 선택한다. 기본형(primitive type)에는 모두 8개의 타입(자료형)이 있으며, 크게 논리형, 문자형, 정수형, 실수형으로 구분된다. 프리미티브 타입과 레퍼런스 타입 자료형은 크게 '기본형(프리미티브 타입)'과 '참조형(레퍼런스 타입)' 두 가지로 나눌 수 있다. 기본형 변수는 실제 값(data)을 저장하고, 참조형 변수는 어떤값이 저장되어 있는 주소를 값으로 갖는다. 이때, 변수 타입이 기본형.......

[자바/java] 연산자 #3 | 산술, 비트, 관계, 논리 연산자, instanceof, 연산자 우선순위 [내부링크]

연산자란 '연산을 수행하는 기호'이다. 연산자가 연산을 수행하려면 반드시 연산의 대상이 있어야 하는데 이것을 피연산자라고 한다. 산술 연산자 산술 연산자에는 사칙연산자(+,-,*,/)와 나머지 연산자(%)가 있다. 곱셈(*), 나눗셈(/), 나머지(%) 연산자가 덧셈(+), 뺄셈(-) 연산자보다 우선순위가 높다. 피연산자가 정수인 경우 나누는 수로 0을 사용할 수 없으며 0으로 나눌경우 에러가 난다.(ArithmeticException) 또한, 나누기 연산자의 두 피연산자가 정수일 경우 결과도 정수로 나오기 때문에 올바른 결과를 얻기 위해선 두 피연산자 중 하나를 형변환해줘야 한다. 10/3 = 3 10/3f = 3.3333333 비트 연산자 비트 연산.......

[자바/java] 제어문 #4-1 | 조건문, 반복문, LinkedList [내부링크]

조건문(if, switch) 조건문은 조건식과 문장을 포함하는 블럭{}으로 구성되며, 조건식의 연산결과에 따라 실행할 문장이 달라져 프로그램의 실행흐름을 변경할 수 있다. -if문 -switch문 swich문은 조건식을 계산한 후 조건식의 결과와 일치하는 case문으로 이동하여 문장을 수행한다. 이후 break문이나 문장 끝을 만나면 switch문을 빠져나올 수 있다. 이때 switch문의 조건식 결과는 정수나 문자열이어야 하고, case문의 값은 정수, 상수가 가능하며 중복되지 않아야 한다. 반복문(for, while) 반복문은 어떤 작업이 반복적으로 수행될 때 사용한다. -for문 주로 반복횟수를 알고 있을 때 사용한다. 이때 초기화와 조건식, 증감식 모두 생략할.......

[자바/java] 클래스 #5 | 객체, 인스턴스, 메소드, 생성자, this [내부링크]

클래스 정의하는 방법 클래스란 '객체를 정의해놓은 것' 이며, 객체를 생성하는데 사용된다. 이때 객체는 속성(멤버 변수)과 기능(메서드)으로 이루어지며 객체는 속성과 기능의 집합이라고 볼 수 있다. 클래스는 객체를 정의한 것이므로 객체의 모든 속성과 기능이 정의되어있다. 아래는 TV라는 클래스에 채널 속성과 기능을 선언한 것이다. 객체 만드는 방법 (new 키워드 이해하기) 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 하며, 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스 라고 한다. 인스턴스는 객체와 같은 의미지만 객체는 모든 인스턴스를 대표하는 포괄적인 의미를 갖고 있고, 인스턴스는 어.......

[자바/java] 상속 #6 | 자바 상속, super, 오버라이딩, 추상클래스, final, Object클래스 [내부링크]

자바 상속의 특징 상속이란 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것으로 코드의 추가 및 변경이 매우 용이하다. 코드의 재사용성을 높이고 중복을 제거하므로 프로그램의 생산성과 유지보수에 크게 기여한다. 자바에서 상속하는 방법은 클래스 이름 뒤에 'extends' 를 상속하고자 하는 클래스 이름과 같이 적어주면 된다. 만약 Parent 클래스에 멤버변수를 추가하면 Child 클래스에도 같은 멤버변수가 추가 된다. 하지만 Child 클래스에서 메서드나 멤버변수를 추가해도 Parent 클래스에는 변화가 없다. 이와같이 부모 클래스가 변경되면 자손 클래스는 자동적으로 영향을 받지만 자손 클래스가 변경되면 부모 클래스.......

[자바/java] 패키지 #7 | package, import, classpath, 접근 제어자 [내부링크]

package 키워드 패키지란 클래스의 묶음으로, 패키지에는 클래스 또는 인터페이스를 포함시킬 수 있다. 서로 관련된 클래스끼리 그룹 단위로 묶어 놓아 클래스를 효율적으로 관리할 수 있다. 이와 같이 선언하며 패키지 선언은 클래스 파일의 첫번째 문장으로 선언하고 단 한번만 선언할 수 있다. 모든 클래스는 반드시 하나의 패키지에 속한다. 패키지 선언이 없는 경우에는 자바에서 기본적으로 '이름없는 패키지'를 제공한다. 위와 같은 예제를 작성하고 'javac -d . Test.java' 로 컴파일 할 수 있다. 이때 -d옵션은 소스파일의 경로를 통해 패키지의 위치를 찾고 클래스 파일을 생성한다. 지정된 패키지와 일치하는 디.......

[JAVA/자바] 백준 1699번: 제곱수의 합 [내부링크]

문제 풀이 https://www.acmicpc.net/problem/1699

[JAVA/자바] 백준 15988번: 1, 2, 3 더하기 3 [내부링크]

문제 1, 2, 3 더하기 문제에서 숫자의 범위만 늘어난 문제이다. 풀이 https://www.acmicpc.net/problem/15988

[JAVA/자바] 백준 1149번: RGB 거리 [내부링크]

문제 배열 arr (입력 받기) 배열 arr (최소 값 구하기) 이후 arr[2][i]에서 최소값을 구하면 된다. 풀이 https://www.acmicpc.net/problem/1149

[JAVA/자바] 백준 1309번: 동물원 [내부링크]

문제 뭔소린가 이해가 안 갔던 문제 ㅎㅎ 한 열에 1. 사자가 없는 경우 2. 사자가 왼쪽에 있는 경우 3. 사자가 오른쪽에 있는 경우 이렇게 세가지의 경우가 있을 수 있다. 2*4 배열 일때 풀이 출처 https://www.acmicpc.net/problem/1309

[JAVA/자바] 백준 11057번: 오르막 수 [내부링크]

문제 dp[자릿수][시작하는수] 로 배열을 선언한다! 자릿수가 1이면 모든 값이 1일 것이고 자릿수가 2이면 dp[2][0] = dp[1][0] + dp[1][1] +...+ dp[1][9] (자릿수가 2이면서 0으로 시작하는 수는 01, 02, 03, ...09) dp[2][1] = dp[1][1] +...+ dp[1][9] ... dp[2][9] = dp[1][9] 라는 규칙을 얻은 후 점화식으로 풀 수 있었다. 풀이 출처 https://www.acmicpc.net/problem/11057

[JAVA/자바] 백준 9465번: 스티커 [내부링크]

문제 다른 풀이를 참조하여 풀었던 문제..! 2칸 뒤 대각선 값이 더 크냐 1칸 뒤 대각선의 값이 더 크냐의 문제였다! 풀이 출처 https://www.acmicpc.net/problem/9465

[JAVA/자바] 백준 2156번: 포도주 시식 [내부링크]

문제 이 문제는 n-1번째 잔을 선택했을 경우와 n-1번째 잔을 선택하지 않았을 경우로 나누어서 더 큰 값을 구해야한다. 어려운 문제ㅜ n-1번째 잔을 선택했을 경우: dp[i-3] + arr[i-1] + arr[i] n-1번째 잔을 선택하지 않았을 경우: dp[i-2] + arr[i] dp[i] = Math.max(dp[i-3] + arr[i-1] + arr[i], dp[i-2] + arr[i]); 이때 수를 두개 이상 뛰어 넘는 게 있을 수 있으므로 (ex) 0 0 10 0 5 10 0 0 1 10) dp[i] = Math.max(dp[i-1], dp[i]); 한 번 더 값을 갱신한다. 풀이 출처 https://www.acmicpc.net/problem/2156

[JAVA/자바] 백준 2156번: 정수 삼각형 [내부링크]

문제 프로그래머스에서 똑같은 문제를 풀었어서 수월했다! 프로그래머스 정수삼각형 풀이 어쩜 문제 이름도 같아(내적 반가움) 풀이 출처 https://www.acmicpc.net/problem/1932

[JAVA/자바] 백준 11055번: 가장 큰 증가 부분 수열 [내부링크]

문제 seq 배열 dp 배열 풀이 출처 https://www.acmicpc.net/problem/11055

[JAVA/자바] 백준 11722번: 가장 긴 감소하는 부분 수열 [내부링크]

문제 가장 큰 증가 부분 수열의 부등호만 바꿔주면 된다! 풀이 https://www.acmicpc.net/problem/11722

[JAVA/자바] 백준 11722번: 가장 긴 바이토닉 부분 수열 [내부링크]

문제 가장 큰 증가 부분 수열과 가장 긴 감소하는 부분 수열을 풀었다면 어렵지 않게 풀리는 문제다. 아직 안 풀었다면 위의 두 문제를 먼저 풀고 오자! 풀이 출처 https://www.acmicpc.net/problem/11054

호스팅이란? 웹 호스팅, 서버 호스팅, 클라우드 [내부링크]

집에서 서비스를 운영하는 것은 불편한 점이 많이 있다. 그런 불편함을 대행해주는 비즈니스가 호스팅이다. 즉 보안과 네트워크 서버의 운영을 대행해주는 것을 호스팅이라고 한다. 호스팅의 종류에는 웹 호스팅, 서버 호스팅, 클라우드가 있다. 웹 호스팅은 수많은 사람들에게 하나의 건물을 주고, 각자 필요한 만큼의 영역을 사용하는 권한을 주는 것과 같다. 웹 호스팅 기반의 사이트는 사실상, 수백에서 수천에 이르는 다른 사이트들과 함께 같은 서버를 이용하며 RAM이나 CPU 같은 서버 자원의 풀을 공유한다. 수많은 사람들이 하나의 서버 자원을 나누어 사용하므로, 그만큼 비용 부담도 분배되어 저렴한 가격에 이용할 수 있다. 서버 호스.......

[JAVA/자바] 백준 15990번: 카드 구매하기 1,2,3 더하기 5 [내부링크]

n = 1일 때 -> 1 n = 2일 때 -> 2 n = 3일 때 -> 1+2, 2+1, 3 n = 4일때 1로 끝나는 경우 -> n=3일때 2로 끝나는 경우 + n=3일때 3으로 끝나는 경우 (1 + 2 + 1) 2로 끝나는 경우 -> n=2일때 1로 끝나는 경우 + n=2일때 3으로 끝나는 경우 x 3으로 끝나는 경우 -> n=1일때 1로 끝나는 경우 + n=1일때 2로 끝나는 경우 (1+3) 2차원 배열로 표현하면 dp[n][1] -> 합이 n이면서 1로 끝나는 경우의 수 dp[n][2] -> 합이 n이면서 2로 끝나는 경우의 수 dp[n][3] -> 합이 n이면서 3로 끝나는 경우의 수 즉 n=4일때의 경우의 수를 식으로 표현하면 아래와 같다. dp[.......

[JAVA/자바] 백준 10844번: 쉬운 계단 수 [내부링크]

dp[길이 N][끝나는 수] 로 이차원배열을 사용해서 풀이하자! N = 1일때 dp[1][1]...dp[1][9] = 1 길이가 1인 경우는 각 한가지 경우의수를 가진다. N = 2일때 dp[2][0] = dp[1][1] -> 길이가 2이면서 0으로 끝나는 경우는 10뿐이다. dp[2][1] = dp[1][2] -> 길이가 2이면서 1로 끝나는 경우는 21뿐이다. (하지만 여기서 +dp[1][0]을 해주어도 상관없다.) dp[2][2] = dp[1][1] + dp[1][3] -> 길이가 2이면서 2로 끝나는 경우는 12,32가 있다. ... dp[2][9] = dp[1][8] -> 길이가 2이면서 9로 끝나는 경우는 89뿐이다. 이때 0으로 끝나는 경우와 9로 끝나는 경우가 예외 사항인것을 알 수 있다. 예.......

[JAVA/자바] 백준 2193번: 이친수 [내부링크]

나의 풀이는 이렇다! 이차원 배열 dp[자릿수][끝나는 수]로 선언한다. N = 1일 때 dp[1][0] = 0 : 1자리이면서 0으로 끝나는 이친수는 없다. (0으로 시작할 수 없기 때문에) dp[1][1] = 1 : 1자리이면서 1로 끝나는 이친수는 1 하나. N = 2일 때 dp[2][0] = dp[1][0] + dp[1][1] : 2자리이면서 0으로 끝나는 이친수는 (0으로 끝나는 한 자릿수 + 1로 끝나는 한 자릿수) 와 같다. dp[2][1] = dp[1][0] : 2자리이면서 1로 끝나는 이친수는 (0으로 끝나는 한 자릿수) 와 같다. -> 1이 연속될 수 없기 때문에 N = 3일 때 dp[3][0] = dp[2][0] + dp[2][1] : 3자리이면서 0으로 끝나는 이친수는 (0으로 끝.......

운영체제란? [내부링크]

'쉽게 배우는 운영체제'책을 토대로 작성한 글 입니다. 일상 생활 속의 운영체제 OS(Operating System)라고도 일컫는 운영체제는 일반 컴퓨터나 노트북의 전원을 켜면 가장 만나게 되는 소프트웨어이다. 대표적인 예로 개인용 컴퓨터에서 사용하는 윈도우, Mac OS 대형 컴퓨터에서 사용하는 유닉스와 리눅스 등이다. 스마트폰에서 쓰이는 운영체제를 모바일 운영체제라고 하는데 애플의 IOS와 구글의 안드로이드가 대표적이다. 컴퓨터와 스마트폰뿐만 아니라 MP3 플레이어, 내비게이션, PMP, 전자사전, 스마트 시계, 스마트 TV에도 운영체제가 있다. 이처럼 CPU 성능이 낮고 메모리 크기도 작은 시스템에 내장하도록 만든 운영체제를 임.......

[JAVA/자바] 백준 11053번: 가장 긴 증가하는 부분 수열 [내부링크]

문제에서 말하는 수열을 최장 증가 부분수열이라고 한다,, 수열 원소들을 입력 받고 seq 배열에 차례대로 넣어줬다. n번째 배열에서 첫번째 배열~n-1번째 배열까지 크기 비교를 하고 현재 배열(n번째 배열)이 더 크다면 dp배열에 수열의 길이를 넣어준다. 그다음 가장 큰 길이를 출력해주면 된다.. 어.려.ㅝ. https://www.acmicpc.net/problem/11053

운영체제의 역사 [내부링크]

'쉽게 배우는 운영체제'책을 토대로 작성한 글 입니다. 초창기 컴퓨터(1940년대) 최초의 컴퓨터 에니악은 사람이 주판으로 7시간 동안 계산했던 것을 단 3초 만에 끝냈다. 백열 전구 같은 모양의 진공관이라는 소자를 사용하여 진공관이 켜지면 1, 꺼지면 0이라고 판단했는데, 이는 컴퓨터가 2진법을 사용하는 계기가 되었다. 초기 컴퓨터에는 키보드, 마우스 모니터와 같은 주변장치가 없고, 전선을 연결하여 논리회로를 구성하는 하드와이어링방식을 사용했다. 하드와이어링은 전선으로 논리회로를 구성하여 결과만 얻는 방식이므로 다른 계산이나 수식을 사용하려면 전선을 다시 연결해야 한다. 초창기의 컴퓨터에는 운영체제가 없.......

운영체제의 구조 [내부링크]

'쉽게 배우는 운영체제'책을 토대로 작성한 글 입니다. 커널과 인터페이스 커널 프로세스 관리, 메모리 관리, 저장장치 관리와 같은 운영체제의 핵심적인 기능을 모아놓은 것으로 운영체제의 성능을 좌우한다. 인터페이스 커널에 사용자의 명령을 전달하고 실행 결과를 사용자에게 알려주는 역할을 한다. 운영체제는 커널과 인터페이스를 분리하여, 같은 커널을 사용하더라도 다른 인터페이스를 가진 형태로 제작할 수 있다. 같은 커널이라도 다른 인터페이스가 장착되면 사용자에게는 다른 운영체제처럼 보인다. 시스템 호출과 디바이스 드라이버 시스템 호출 커널이 제공하는 시스템 자원의 사용과 연관된 함수이다. 예를 들어.......

[JAVA/자바] 백준 1912번: 연속합 [내부링크]

처음엔 시간 복잡도 O(N^2)으로 접근했는데 알고보니 좀더 간단한 문제! 현재 수와 (앞전까지의 최대값 + 현재수) 의 최대값을 구하면 되는 문제! 앞전까지의 최대값은 dp를 이용해 풀었다! https://www.acmicpc.net/problem/1912

[JAVA/자바] 백준 2225번: 합분해 [내부링크]

문제 접근방법 N까지의 정수에 대해 K개로 표현할 수 있는 경우의 수를 dp[N][K]라고 할 때 dp[N][K] = dp[N-1][K-1] + dp[N-2][K-1] ... dp[0][2] 라는 식을 얻을 수 있다! 만약 N이 5고 K가 2라면? 0 5, 1 4, 2 3, 3 2, 4 1, 5 0 총 6개가 나온다. 이때 어떤 N이라고 K가 2라면 N+1개의 값을 갖는다는 것을 알아냈다. 만약 N이 5고 K가 3이라면? 위에서 구했던 2의 경우에서 0 5-> 2개 더해서 5가 되는 경우 dp[5][2] 1 4 -> 2개 더해서 4가 되는 경우 dp[4][2] 2 3 3 2 4 1 5 0 -> ... 를 구하면 되는 것을 알아냈다! 결국 dp[5][3] = dp[5][2] + dp[4][2] + ... dp[0][2] 라는 식을 구할 수 있다. 구한 점화식으로 풀이를.......

[JAVA/자바] 백준 14002번: 가장 긴 증가하는 부분 수열 4 [내부링크]

문제 일단 11053번의 연장선이다. 출력하는 다양한 방법을 시도해봤지만 stack을 이용했을 때 정답이 통과되었다. dp배열 값이 max를 만날때 stack에 push해주고 max를 1씩 줄여주었다. 풀이

[Springboot-Security]스프링부트 시큐리티 OAuth2 네이버 로그인 [내부링크]

1. 네이버 개발자 도구에서 애플리케이션 등록을 한다. https://developers.naver.com/apps/#/register 2. 서비스 URL과 Callback URL을 적어주고 등록한다. 이때 Callback URL은 자유롭게 적는다. 3. yml 작성 - google과 같은 라인에 적어준다. redirect-uri와 Callback URL이 일치해야한다. 4. 네이버 로그인은 provider가 등록되어 있지 않기 때문에 yml에 직접 입력해준다. 5. 로그인 주소를 /oauth2/authorization/naver으로 등록하면 authorization-uri가 호출된다. 6. 구글 로그인에서 사용자 정보를 가져올 때 oAuth2User.getAttributes()를 사용했지만 네이버 로그인에서는 (Map)oAuth2User.getAttributes().get("response").......

[Springboot-Security]스프링부트 시큐리티 OAuth2 카카오 로그인 [내부링크]

1. 카카오 개발자 도구에 들어가서 애플리케이션을 추가한다. https://developers.kakao.com/ 2. 플랫폼 설정하기로 들어가서 web 플랫폼을 등록해준다. 3. Redirect URI를 등록한다 4. yml 설정 5. 로그인 버튼 및 링크 연동 /oauth2/authorization/kakao로 설정하면 카카오의 authorization-uri인 https://kauth.kakao.com/oauth/authorize를 호출한다. 6. 사용자 정보 가져오기 위와 같이 응답이 되는데 찾고자 하는 정보는 id, nickname, email이다. id는 super.loadUser(userRequest)로 바로 가져올 수 있지만 email은 kakao_account 안에 있고, nickname은 kakao_account의 profile 안에 있다. 아래와 같이 정보를 가져 올 수 있다. 구글, .......

[JAVA/자바] 프로그래머스 Level 2. 게임 맵 최단거리 [내부링크]

https://programmers.co.kr/learn/courses/30/lessons/1844 <풀이> 반가웠던.. bfs문제. 다음에 비슷한 문제를 만나면 풀 수 있겠지?^^ 90분 동안 풀어야 하는 문제였지만 시간초과로 효율성 점수에서 통과하지 못했다. 시간초과가 난 이유는..for문 안에서 queue에 add 한 다음 visited를 안 해줘서 계속 시간초과가 났다ㅜ 빨리 알았다면 좋았을 것을! 아숩

[JAVA/자바] 프로그래머스 Level 4. 올바른 괄호의 갯수 [내부링크]

https://programmers.co.kr/learn/courses/30/lessons/12929 <풀이> 열린괄호는 1, 닫힌 괄호는 -1로 두고 더해준다. level = 4 일때의 sum이 0이라면 갯수를 세어준다. 만약 중간에 sum이 0보다 작아진다면 dfs를 빠져나와야한다. sum 값이 음수가 나온 다는 것은 열린 괄호보다 닫힌 괄호 갯수가 더 많다는 뜻이기 때문이다. 예를 들어 ()) 이런 형태. 최대 깊이 max는 n개의 '쌍'이므로 n*2가 된다.

[JAVA/자바] 프로그래머스 Level 1. 로또의 최고 순위와 최저 순위 [내부링크]

https://programmers.co.kr/learn/courses/30/lessons/12977# 에라토스테네스의 체로 풀면 런타임에러가 뜬다. 이유는 모름..ㅠ

[AWS EC2] 코드 수정 후 재배포 하기 [내부링크]

1. 변경 된 코드를 받아온다. 2. 프로세스를 확인한다. java -jar target/프로그램-0.0.1-SNAPSHOT.jar를 찾는다. 3. 해당 프로세스를 종료 시킨다. 4. 재빌드 한다.

HTTP란? [내부링크]

HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 컴퓨터 내부에서 정의하는 규칙체계이며 클라이언트-서버 프로토콜이기도 하다. 클라이언트와 서버는 메세지 교환에 의해 통신하는데, 브라우저인 클라이언트에 의해 전송되는 메시지를 요청(request)이라고 부르며, 서버에서 응답으로 전송되는 메시지를 응답(response)이라고 부른다. 클라이언트의 개별적인 요청들은 서버로 보내지고, 서버는 요청을 처리하여 응답을 제공하는데, 이 요청과 응답 사이에는 게이트웨이 또는 프록시 등이 있다. 클라이언트는 사용자를 대신하여 동작하는 모든 도구이며 주로 브라우저에 의해 수행된다. 이때 브라우저는 항상 요청을 보내는 개체이.......

인터넷 동작 원리, 인터넷과 웹의 차이에 대해 알아보자! [내부링크]

인터넷 동작 원리 두 개의 컴퓨터가 통신이 필요할 때, 두 컴퓨터는 물리적(이더넷 케이블)으로 또는 무선(wifi나 bluetooth)으로 연결되어야 한다. 모든 현대 컴퓨터들은 이러한 연결 중 하나를 이용하여 연결을 지속할 수 있다. 네트워크는 두 대의 컴퓨터로 제한되지 않고, 원하는 만큼의 컴퓨터를 연결할 수 있지만 이렇게 연결할 수록 매우 복잡해진다. 아래의 그림처럼 10대의 컴퓨터를 연결하려는 경우 컴퓨터 당 9개의 플러그가 달린 총 45개의 케이블이 필요하다. 이러한 문제는 네트워크의 각 컴퓨터가 라우터에 연결되면서 해결된다. 라우터는 컴퓨터에서 보낸 메시지가 올바르게 대상 컴퓨터에 도착하는지 확인한다. 컴퓨터 A가 컴퓨.......

브라우저는 어떻게 작동할까? [내부링크]

브라우저란? 브라우저는 사용자가 선택한 자원을 서버에 요청하고 표시해주는 역할을 한다. 여기서 말하는 자원은 보통 HTML문서이지만 PDF나 이미지 또는 다른 형태가 될 수 있다. 자원의 주소는 URI(Uniform Resource Identifier)에 의해 정해진다. 브라우저는 HTML과 CSS 명세에 따라 HTML 파일을 해석해서 표시하는데 이 명세는 웹 표준화 기구인 W3C(World Wide Web Consortium)에서 정한다. 브라우저의 종류에는 파이어폭스, 크롬, 사파리 등이 있다. 브라우저의 기본 구조 1. 사용자 인터페이스 - 주소 표시줄, 이전/다음 버튼, 북마크 메뉴 등. 요청한 페이지를 보여주는 창을 제외한 나머지 부분 2. 브라우저 엔진 - 사용자 인터페이스.......

DNS와 작동원리 [내부링크]

DNS란? DNS란 도메인 이름 시스템으로 불리며, 사람이 읽을 수 있는 도메인 이름(www.example.com)을 숫자 IP 주소(12.0.2.1)로 변환해 준다. 인터넷의 DNS 시스템은 이름과 숫자 간의 매핑을 관리하여 마치 전화번호부와 같은 기능을 한다. DNS 서버는 도메인 이름을 IP 주소로 변환하여 웹 브라우저에 입력할 때 최종 사용자를 어떤 서버에 연결할 것인지를 제어한다. 이 요청을 쿼리라고 부른다. DNS 작동 원리 브라우저에 www.naver.com을 입력하면 Local DNS(단말에 설정되어 있는 DNS)에게 "www.naver.com"에 대한 IP주소를 물어본다. Local DNS에는 "www.naver.com"에 대한 IP주소가 있을 수도 있고 없을 수도 있다. .......

[JAVA/자바] 프로그래머스 Level 3. 입국심사 [내부링크]

<출처> https://programmers.co.kr/learn/courses/30/lessons/43238?language=java <풀이> 이진 탐색 알고리즘을 처음 접해서 아래 블로그를 참고하였다. https://cjh5414.github.io/binary-search/ 그리고... "사람 수(n) = 주어진 시간(mid) / 해결시간(times)" 이라는 힌트를 얻고 나서야 코드를 짤 수 있었다ㅜㅜ 낼 코테 있는디 한개라도 제대로 풀었으면 조케따^^^^

[JAVA/자바] 프로그래머스 Level 3. 기지국 설치 (with 프로그래머스 커뮤러닝) [내부링크]

커뮤러닝 1일차! 프로그래머스에서 진행하는 코테 광탈 방지 스터디를 신청했다.!! 강의 내용도 좋아서(필요한 부분만 딱 알려주는 거 짱) 만족중 ㅎ 내일배움 카드만 있으면 신청 가능 댑악 100% 이수해서 잘 수료하자~~~~ <출처> https://programmers.co.kr/learn/courses/30/lessons/12979 <풀이> 커뮤 러닝의 첫번째 문제다. 주어진 60분 동안 문제를 풀어야 하는데 나는 76.5점으로 마무리했다ㅠ 접근 방법은 정답과 유사한데 정확성 테스트에서 5개 정도 틀리더라,,, 60분이라는 제한시간이 있어서 더 문제에 집중하게 되는 거 같다! 1. position을 1로 초기화하고 position이 n보다 작거나 같을 때 까지 반복한다. 2.......

[JAVA/자바] 프로그래머스 Level 2. 가장 큰 수 (with 프로그래머스 커뮤러닝) [내부링크]

https://programmers.co.kr/learn/courses/30/lessons/42746 <풀이> 전에 한 번 풀어봤던 문제라 시간 안에 풀고 제출했다. (예전 풀이 컨닝함) 이 문제의 관건은 정렬!! 인데..compare 메소드에서 리턴 되는 값은 언제봐도 참 헷갈린다. 1. numbers 배열을 String 배열로 변환 2. 문자 두개를 합했을 때 내림차순으로 정렬 ex) "6" + "10" => "610" 이 "106"보다 우선순위 3. 배열 안의 문자가 모두 "0" 일때 "0"을 반환 해줘야한다! <람다 & 스트림 풀이> 스트림 언제 익숙해져? 문자열의 첫번째 문자를 검사할 때는 startsWith을 권장한다고 한다..

[Springboot-Security]스프링부트 시큐리티 OAuth2 구글 로그인 [내부링크]

1. 구글 api 콘솔로 들어가 새로운 프로젝트를 생성한다. https://console.cloud.google.com/apis 2. OAuth 동의 화면에서 앱 이름과 이메일을 입력하고 저장한다. 3. 사용자 인증정보 - 사용자 인증 정보 만들기 - OAuth 클라이언트 ID 애플리케이션 유형을 선택하고 승인된 리디렉션 URI에 http://localhost:8080/login/oauth2/code/google 를 넣는다. 4. maven dependency 추가 5. yml에 다음 추가 설정 6. 로그인 버튼에 링크 달기 이때 주소 /oauth2/authorization/google 는 고정이다. - oauth2 클라이언트 사용시 7. 스프링 시큐리티 설정에서 .oauth2Login().loginPage("") 를 추가한고 후처리를 위해 .userInfoEndpoint()와 ........

[JAVA/자바] 프로그래머스 Level 3. 등굣길 [내부링크]

<출처> https://programmers.co.kr/learn/courses/30/lessons/42898?language=java <풀이> 정답이 되기까지 몇번의 코드를 갈아엎었는지 모르겠다.. 굉장히 오랜시간을 투자함 ^^,, 1. 최단 거리가 들어갈 dp 배열과 물 웅덩이를 구분할 pass 배열을 선언한다. 2. (1,1)은 1로 초기화 하고 3. 물 웅덩이가 있는 칸은 true로 초기화한다. 4. 모든 칸을 순회하며 왼쪽과 위쪽 값을 더해주면 된다. (오른쪽과 아래쪽으로만 이동이 가능) 5. 이때 물 웅덩이가 있는 칸은 그냥 넘어간다. => if(pass[i][j]) continue; => 0으로 유지

[JAVA/자바] 프로그래머스 Level 3. 정수 삼각형 [내부링크]

<출처> https://programmers.co.kr/learn/courses/30/lessons/43105?language=java <풀이> 위에서 아래로 더해가되, 더 큰 값을 선택해서 더해가고 최종적으로 맨 아래줄의 최대값을 구하면 된다! 좋은 문제 같다! --3주 뒤 다시 푼 풀이--

[JAVA/자바] 프로그래머스 Level 3. 단속카메라 [내부링크]

<출처> https://programmers.co.kr/learn/courses/30/lessons/42884?language=java <풀이> 일단 문제는 어렵지 않게 접근을 했는데 진입 지점을 기준으로 오름차순 정렬 하는게 아니라 진출 지점 기준으로 오름차순 정렬을 해야한다니!! 정렬을 바꾸니 바로 통과가 되드라,, 문제에 나와있는 예시로 설명을 하자면 1. 진출 지점을 기준으로 오름차순 정렬한다. [-20, -15] [-18, -13] [-14, -5] [-5, -3] 2. -15 보다 진입 지점이 작다면 같은 카메라를 사용한다! next는 i번째 바로 다음을 체크 하므로 next = i + 1; while(next < routes.length && routes[next][0] <= routes[i][1]){ next++; } -15.......

[JAVA/자바] 프로그래머스 Level 3. N으로 표현 [내부링크]

<출처> https://programmers.co.kr/learn/courses/30/lessons/42895 <풀이> 겁나 어려웠던 문제.. 감이 하나도 안 잡혀서 결국 구글링..! 이런 문제 코테에 나오면 손도 못댈듯 참고한 블로그

[JAVA/자바] 프로그래머스 Level 3. 헤비 유저가 소유한 장소 [내부링크]

<문제> <풀이> <출처> https://programmers.co.kr/learn/courses/30/lessons/77487

[JAVA/자바] 프로그래머스 Level 3. 디스크 컨트롤러 [내부링크]

<출처> https://programmers.co.kr/learn/courses/30/lessons/42627 <풀이> - 주석 풀이

[JAVA/자바] 프로그래머스 Level 3. 이중우선순위큐 [내부링크]

<출처> https://programmers.co.kr/learn/courses/30/lessons/42628?language=java <풀이> - 주석 설명

[JAVA/자바] 프로그래머스 Level 2. 조이스틱 [내부링크]

<출처> https://programmers.co.kr/learn/courses/30/lessons/42860 <풀이> 몇 달 전 풀다가 포기했던 문제^^ 상하로 움직이는 건 쉽게 구현 가능하지만 좌우로 움직이는게 관건인 문제다 JNAAN을 만들려고 할 때 오른쪽으로 쭉 이동할 때 보다 뒤로 돌아가는 편이 더 빠르다 이때의 구현이 1. 다음 문자가 A라면 idx+1을 해준다. 2. 최종적으로 idx = 3으로 마무리된다. 이때 i는 1 3. i * 2 = 2 => J -> N -> J 4. name.length() - idx => 마지막 남은 문자 N 5. 직접 해보면 더 이해하기 쉽다. 설명하기 어렵다....

[JAVA/자바] 프로그래머스 Level 3. 섬 연결하기 [내부링크]

<출처> https://programmers.co.kr/learn/courses/30/lessons/42861# <풀이> 2시간 방황하다가 겨우겨우 구글링해서 풀었습니닫ㅇ 이게 크루스칼 알고리즘..이라는 거군요?! 분명 올해 초 노트에 필기는 되어있는데 새롭네 설명을 너무너무 잘 해주셔서 이해 쏙쏙인 블로그를 참고했습니다^^ 답을 찾기위해 먼길을 돌아왔지만 크루스칼 알고리즘을 문제에 적용해본 것은 처음이라 공부가 마니 되었다!

[JAVA/자바] 프로그래머스 Level 2. 행렬 테두리 회전하기 [내부링크]

<문제> <풀이> 4문제 중 가장 까다로운 문제였다!!ㅜㅜ x와 y방향도 헷갈리고 4면 중 어디부터 해야할지도 어려웠던 거 같다.. 1. 우선 전체 배열을 만들어야한다. 2. 왼쪽 위에 있는 숫자를 temp에 저장해 놓는다. 3. 아래 그림 순서대로 위치를 바꿔주면서 해당 면의 최소값을 구한다. 3. 마지막 4번째 면의 위치를 이동 시킬 때 10의 자리에 9가, 9의 자리에 14가 들어가는데 숫자가 겹치게 된다. (14 14 10) 이때 아까 temp에 저장해 놓은 8을 9의 자리에 넣어주면 된다! (14 8 10) 이해하면 쉽지만 초보인 내가 코드를 구상하는 건 버거웠다..ㅎ <출처> https://programmers.co.kr/learn/courses/30/lessons/77485

[JAVA/자바] 프로그래머스 Level 3. 다단계 칫솔 판매 [내부링크]

<문제> 문제 너무 길어서 생략 <풀이> 이 문제도 힘들었어 엉엉 ㅜㅜ 근데 한 번 이해하고 나니 엄청 어려운 문제는 아닌둡,, result라는 이름의 map에는 (enroll, enroll들의 이익) recommend라는 이름의 map에는 (enroll, referral) 이 들어간다. (판매원, 추천인) 나머지는 아래 주석 확인 <출처> https://programmers.co.kr/learn/courses/30/lessons/77486

[JAVA/자바] 프로그래머스 Level 1. 로또의 최고 순위와 최저 순위 [내부링크]

2021 Dev-Matching: 웹 백엔드 개발자(상반기) 문제들을 풀어보았다. 제한 시간안에 4문제 중에 2문제를 풀 수 있었다.. 담주에 있는 하반기 시험을 볼 예정이라 기출을 풀어봤는데 통과 할 수 있으려나 모르겠넴 <풀이> 유일하게 잘 풀렸던 문제 ^^ 내 풀이는 아래와 같다. 1. lottos와 win_nums 배열을 오름차순으로 정렬한다. 2. lottos의 0의 개수를 센다. zeroCnt 3. lottos와 win_nums에 같은 원소가 있다면 sameCnt+1을 해준다. 4. 최대값은 0이 모두 win_nums원소랑 일치 할 때 이고 최소값은 0이 모두 win_nums원소랑 불일치 할 때 이다. 5. 최대값 : 6 - (sameCnt + zeroCnt) + 1 => sameCnt + zeroCnt = 6 일때(6개.......

[JAVA/자바] 백준 11052번: 카드 구매하기 [내부링크]

<문제> <풀이> 증말 어렵네 풀이를 먼저 보고 이해하게 된 문제다^^ dp[1] : 1개를 갖기 위한 최대값 dp[2] : 2개를 갖기 위한 최대값 . . . dp[N] : N개를 갖기 위한 최대값이 담겨 있어야한다. 우선 dp배열에 1 5 4 6 을 순서대로 집어넣고 dp[1] = dp[1] + dp[0] = 1 => 1개를 갖기 위한 최대값은 1이다. dp[2] = dp[1] + dp[1] = 2 = dp[2] + dp[0] = 5 => 2개를 갖기 위한 최대값은 5이다. dp[3] = dp[1] + dp[2] = 6 = dp[2] + dp[3] = 9 = dp[3] + dp[0] = 4 => 3개를 갖기 위한 최대값은 9이다. dp[4] = dp[1] + dp[3] = 10.......

[JAVA/자바] 백준 16194번: 카드 구매하기 2 [내부링크]

<문제> <풀이> 11052문제와 단어 하나 차이... 이정도면 같은 문제 아닌가용 이전문제에서 최대값을 구했다면 이 문제에선 최소값을 구하면 된다! <출처> https://www.acmicpc.net/problem/16194

[JavaScript] 자바스크립트 is not defined at HTMLButtonElement.onclick [내부링크]

자바스크립트로 문자열을 넘길때 홑따옴표가 필요하다 홑따옴표를 안 쓰고 ${u.name}을 썼다가 계속 오류가 났다. 휴 자바스크립트 깐깐한 녀석

[JAVA/자바] 백준 11727번: 2 x n 타일링 2 [내부링크]

<문제> <풀이> 11727번 문제와 아주 유사하다. 11727번에서는 길이가 2일 때 나타 낼 수 있는 경우가 (세로 막대 제외) 한 가지 였다면 이 문제에서는 두 가지 이다. 그러므로! arr[i-1] + arr[i-2] * 2 이렇게 식을 세워주면 된다. <출처> https://www.acmicpc.net/problem/11727

[JAVA/자바] 백준 9095번: 1, 2, 3 더하기 [내부링크]

<문제> <풀이> 난 진짜 바보야... 제대로 접근했는데 문제 잘못 읽고 이상한 길로 빠졌넹ㅇ..... n이 1일때 -> 1 n이 2일때 -> 1+1, 2 n이 3일때 -> 1+1+1, 1+2, 2+1, 3 n이 4일때 -> 3일때의 경우 +1(1 + 1 + 1 +1, 1 + 2 +1, 2 + 1 +1, 3 + 1), 2일때의 경우 + 2, 1일때의 경우 + 3 n이 5일때 -> 4일때의 경우 + 1, 3일때의 경우 + 2, 2일때의 경우 + 3 => 1일 때의 경우가 안 되는 이유: 1+4 로 표현되기 때문에. (1, 2, 3의 합으로 표현되야 한다) 결국 n-3까지 경우의 수를 더할 수 있다. arr[n] = arr[n-1] + arr[n-2] + arr[n-3] <출처> https://www.acmicpc.net/problem/9095

[JAVA/자바] 백준 2089번: -2진수 [내부링크]

<문제> <풀이> 나름대로 규칙을 찾아서 풀었지만 하드코딩 때려 박은 듯한 코드 퀼이네요 헤헤 <출처> https://www.acmicpc.net/problem/2089

[JAVA/자바] 백준 17103번: 골드바흐 파티션 [내부링크]

<문제> <풀이> 골드바흐 파티션을 이전에도 다른 문제에서 풀었었는데 그 풀이 중 80%가 유사한 느끰. 이전 문제 링크 마찬가지로 에라토스테네스의 체 알고리즘을 사용하여 소수와 소수가 아닌 수를 구별해 놓고 2부터 num(입력 받은 수)/2까지 소수의 합으로 나타낼 수 있는 경우를 카운트해주면 된다! <출처> https://www.acmicpc.net/problem/17103

[JAVA/자바] 백준 11005번: 진법 변환 2 [내부링크]

<문제> <풀이> 처음에 문제를 읽고 뭔소린가 싶었던 문제 ㅎ,, 결국 B진법 수를 만들라는 것이었다.. 나머지 값을 출력하고 몫이 0이 될 때까지 나눠준다. 이때 나머지값이 10이상이면 A,B,C,D...로 표현해야 하는데 나는 아스키 코드에서 대문자가 65~90인 것을 이용하였다. 그러므로 나머지 값이 10 이상이라면 55를 더해주고 10 미만이라면 그대로 출력한다. <출처> https://www.acmicpc.net/problem/11005

[JAVA/자바] 백준 2745번: 진법 변환 [내부링크]

<문제> <풀이> 이번 문제는 변환 된 수를 10진수로 바꾸는 문제다. B진법 수는 영어 대문자이거나 숫자로 이루어져 있을 것이므로 이를 구별하여 계산해준다 대문자면 55를 빼주고, 숫자면 '0'을 빼줘서 숫자로 만들어준다. 빼준 숫자에 B의 제곱수를 곱해주면 끝! 제곱 수를 직접 구현하려다가 귀찮아서..ㅎ Math.pow 메소드를 사용 했다. <출처> https://www.acmicpc.net/problem/2745

[JAVA/자바] 백준 11576번: Base Conversion [내부링크]

<문제> <풀이> 앞서 푼 두 문제를 짬뽕한 문제!! 풀이가 어렵진 않지만 문제 이해가 어려웠던 문제.. 1. 2 16 이 별개의 숫자가 아니라 자릿수에 첫번째 자리수가 2, 두번째 자리수가 16 이라는 뜻 2. 10진법에서 B진법으로 변환 할 때 StringBuilder를 사용하면 두 자리 수일때 뒤집어 나온다. 예를 들어 15가 답인데 51이 나온다. 3. 그래서 m개의 배열을 사용했는데 이것도 문제가 있다. 입력 수랑 출력 수가 같지 않으므로 답이 제대로 안 나온다! 4. 그러므로 stack을 사용한 문제 ㅎ.ㅎ <출처> https://www.acmicpc.net/problem/11576

[JAVA/자바] 백준 11653번: 소인수분해 [내부링크]

<문제> <풀이> 에라토스테네스의 체로 소수 판별 배열을 만든 후 소수일때만 해당 수를 나눠주고 나누어 떨어진다면 몫을 출력한다. <출처> https://www.acmicpc.net/problem/11653

[JAVA/자바] 백준 1463번: 1로 만들기 [내부링크]

<문제> <풀이> dp 문제를 많이 접하지 못해서 어려웠던 문제다.. 다이나믹 프로그래밍에는 Top-Down(재귀 함수) 방식과 Bottom-Up(반복문) 방식이 있는데 Bottom-Up 방식이 일반적인 방법이라고 한다. 문제를 풀기에 앞서 여러 블로그를 참고했지만 내가 가장 이해하기 쉬웠던 알고리즘으로 풀이했다. 1~1000000사이의 수가 주어지므로 1000001크기의 배열을 선언한다. 세 가지 경우의 수가 주어지는데 1. 1을 빼라 (arr[i-1] + 1) 2. 2로 나누어떨어지면 2로 나눠라 (arr[i/2] + 1) 3. 3으로 나누어떨어지면 3으로 나눠라 (arr[i/3] + 1) 이때 1을 뺀 값, 2로 나눈 값, 3으로 나눈 값 중 최솟값이 arr[i]의 값이 된다. if(i % 2 &#x.......

[JAVA/자바] 백준 11726번: 2 x n 타일링 [내부링크]

<문제> <풀이> 이 문제는 올해 초쯤에 c++로 강의(동빈나) 들었던 문젠데 .. 머리에서 증발해버렸당 그 당시에 필기 해 놓은 알고리즘으로 풀었는데 n = 1 일때 1가지 n = 2 일때 2가지 n = 3 일때 3가지 경우의 수가 나온다. 결국 마지막 타일이 세로로 하나 있을 때와 가로로 두개 있을 때의 경우의 수를 합한 것과 같다. 그러므로 식은 dp[n] = dp[n-1] + dp[n-2]로 세울 수 있다! <출처> https://www.acmicpc.net/problem/11726

[JAVA/자바] 백준 17087번: 숨바꼭질 6 [내부링크]

<문제> <풀이> 수빈이 위치와 동생들의 위치 차이를 절대값으로 구하고, 그 차이값들의 gcd(최대공약수)를 구해준다. <출처> https://www.acmicpc.net/problem/17087

[JAVA/자바] 백준 1373번: 2진수 8진수 [내부링크]

<문제> <풀이> 브론즈 레벨이길래 30분컷 쌉가능;; 이라고 생각했는데 한시간 넘게 걸린듯; 게다가 문제가 2진수를 10진수로 바꾸는 문젠줄 알고 풀었다가 시간만 날렸당 ㅎㅎ!! 그리구 8진수로 바꾸는 법 까먹음 데헷 2진수 -> 8진수 전환 : 소수점을 기준으로 세개씩 묶어서 계산한다 11 001 100 -> 3 1 4 나의 풀이는 (2진수의 길이 - 현재 인덱스 값 % 3)이 핵심이다. 11 001 100 -> 21 021 021 이렇게 세 개를 묶어서 보면 021이 반복되는 걸 알 수 있고 0일때는 4를(22), 2일때는 2(21)를, 1일때는 1(20)을 곱해주면 되는 것이다.. 그리고 이때 1을 기준으로 묶음이 끝나는 시점이기 때문에 1을 만나면 sum을 초기화.......

[JAVA/자바] 백준 1212번: 8진수 2진수 [내부링크]

<문제> <풀이> 314가 주어졌을 때 4부터 차례대로 2로 나눈 나머지 값을 StringBuilder에 저장한 후 reverse해줬다. 이때 문제 조건이 맨 앞에 0이 나오면 안 되므로 첫번째 숫자(3)일땐 0을 추가 안 해주고--(a) 첫번째 숫자가 아닐 땐 3자리 중 남은 자리들을 0으로 채워준다.--(b) 입력이 0일때 0이 나와야 한다!--(c) 처음엔 for문 안에 append를 넣었는데 인텔리제이 추천으로 세줄 코드를 한줄로 바꿨다. repeat이라는 함수는 처음 써보는데 훨씬 간결한 것 같다! 맨 처음 숫자에 0을 없애기 위해 Integer.parseInt를 사용 했다가 어마 무시하게 커지는 숫자로 인해 NumberFormatException에러가 났었다^^ <출처> https:.......

[JAVA/자바] 백준 1676번: 팩토리얼 0의 개수 [내부링크]

<문제> <풀이> 내 원래 풀이를 2시간 정도 고민하다가 도저히 모르겠어서.. 질문에 올리고 일단 기다려 보기로 했다.. 왜 틀렸는지 모르겠음 ㄹㅇ..;;; 더 이상 시간 쓰는 건 내 알고리즘 능력의 한계치에 도달했기 때무네 관둠! 아래 풀이는 매번 도움받는 것 같은 너무너무 친절한 블로그를 참고해서 풀었다. 이렇게 간단하게 풀리는 거였다고?????? 팩토리얼값의 끝자리 0의 개수는 결국 소인수분해했을 때 5가 들어가는 개수와 같다. (이 풀이는 거품 같아요. 언빌리버블) 끝자리 0의 개수는 결국 10으로 몇 번 나누어지느냐이고 10 = 2 x 5 이고 2의 개수는 5의 개수보다 항상 많을 수밖에 없다! 그러므로 5의 개수를 구해.......

[JAVA/자바] 백준 2004번: 조합 0의 개수 [내부링크]

<문제> <풀이> 1676번 문제를 풀고 난 뒤라 수월했던 문제 처음에 변수를 12개를 만들어서 풀다가 겹치는 코드가 너무 많아서 함수를 사용했다 ㅎ 이 문제에서 유의해야 할 점은 1676번은 2의 개수가 항상 5의 개수가 많아서 5의 개수만 구하면 됐지만 이 문제는 2의 개수가 더 적어지는 경우가 생기므로 5의 개수와 2의 개수 모두 구한 후 더 작은 수를 return 해야한다. (예를 들어 입력 값 20 16) 위 풀이 : 함수 사용 아래 풀이 : 함수 사용 안 함 (변수 12개 ㅋㅋ) <출처> https://www.acmicpc.net/problem/2004

[안드로이드] 리사이클러뷰(RecyclerView) 스크롤 시 아이템 변경 문제 해결 [내부링크]

리사이클러뷰를 사용하면서 아이템이 많아지면 사진이 갑자기 사라지는 등 원래 있어야 될 자리에 없고 다른 글에 사진이 생기는 이상한 현상이 생겼었다 ㅜㅜ 걍 뒤죽박죽 엉망진창이 됨 코드를 수정 해보기도 했지만 상황이 똑같아서 포기각인가 했는데... 알고보니 안드로이드 리사이클러뷰의 고질적인(?) 문제인 것 같다..아놔;; 리사이클러뷰의 아이템 재사용이 문제라고 한다.. 리사이클러뷰의 Adapter 파일에 getItemViewType을 오버라이드 해주면 해결이 된다^__^ 아오 내 시간 돌려내~~~~~~~~~~~~~ <출처> https://jhshjs.tistory.com/136

[JAVA/자바] 백준 9613번: GCD 합 [내부링크]

<문제> <풀이> 이 문제에서 주의 해야 할 점은 sum의 자료형이다. sum의 최대값이 int형의 최대값 범위를 넘어가기 때문에 long으로 선언해야한다! (int로 선언하면 "틀렸습니다"가 나온다..!) 유클리드 호제법을 알고 있다면 알고리즘은 단순한다.(유클리드 호제법 식은 이제 외워버렸돠) 다만 반복문이 많이 나와서 시간초과가 되지 않을까 우려 했었다ㅎ <출처> https://www.acmicpc.net/problem/9613

[JAVA/자바] 백준 1929번: 소수 구하기 [내부링크]

문제 풀이 1 (제곱근을 사용한 일반 풀이) 1. 1이면 continue해주고 2. 2부터 현재 수의 제곱근까지 반복문을 돌려 나누어 떨어지면 cnt++를 해준다. 3. 이때 나누어 떨어지는 수가 하나라도 있다면 반복문을 탈출한다 (소수가 아니다) 4. 반복문을 다 돌고 cnt가 0이면 출력해준다. (소수 출력) 풀이 2 (에라토스테네스의 체) 에라토스테네스의 체를 이용한 풀이! 프로그래머스에서도 이 알고리즘을 사용하여 풀이를 한 적이 있다. 에라토스테네스의 체는 2의 제곱, 3의 제곱, 4의 제곱....을 소거하여 남는 수가 소수라는 원리이다! 1. 마지막수 + 1만큼의 배열을 선언하고 2. 배열의 0번째와 1번째는 true로 바꿔준다. (0과 1은 소수가 아니다.......

[JAVA/자바] 백준 6588번: 골드바흐의 추측 [내부링크]

문제 풀이 백준 1929번에서 업그레이드 된 문제라고 느껴졌다 ㅎㅎ 첫 풀이에서 while문 안에 input값까지 소수를 찾는 반복문을 넣었더니 시간초과가 났다! 이 방법은 같은 범위를 반복해서 소수를 찾게 되므로 효율성이 떨어진다.! 예를 들어 100이랑 120이 입력값으로 들어온다면 2부터 100까지 소수를 찾고, 또 2부터 120까지 소수를 찾는다. 시간 초과 될 수 밖에 ! 1. 주어진 최대 입력 값이 1000000이므로 2부터 1000000까지 단 한 번만 소수를 찾는다! (에라토스테네스의 체를 사용하여) 2. arr[i]와 arr[end-i] 둘 다 소수 일 때 출력을 한다. (end = i + (end - i)) 3. 예외를 찾기 위해 2번이 통과 되었을 때만 bool에 true를 넣.......

[JAVA/자바] 백준 10872번: 팩토리얼 [내부링크]

문제 두 가지 방법으로 풀이가 가능하다. 난 for문 먼저 생각했는데 다른 풀이들 보니 이 문제가 재귀함수 카테고리에 있다고..ㅎㅎ 팩토리얼 개념을 알고 있다면 쉽게 풀린다! 풀이 1 (for 문) 풀이 2 (재귀함수) 위 : 풀이 2 (재귀), 아래: 풀이 1 (for문) 재귀로 풀면 메모리 차지가 크다고 한다! 출처 https://www.acmicpc.net/problem/10872

[JAVA/자바] 백준 1978번: 소수 찾기 [내부링크]

문제 풀이 주어진 수 들 중 소수의 개수를 찾는 문제! 1. n이 1이면 총개수(N)에서 -1을 해준다. (1은 수소가 아님) 2. 2부터 현재 수 직전까지 나누었을 때, 나누어 떨어지는 수가 있다면 소수가 아니므로 총개수(N)에서 -1을 해준다. (이때 n까지가 아니라 n의 제곱근까지 반복문을 돌리는 것이 더 효율적이다.) 출처 https://www.acmicpc.net/problem/1978

[JAVA/자바] 백준 2609번: 최대공약수와 최소공배수 [내부링크]

문제 풀이 프로그래머스에서도 똑같은 문제를 풀었었다! 유클리드 호제법을 사용한 최소공약수 구하기 문제~~ 자주 나오니 외워두는 게 좋을 거 같다. GCD(a,b) = GCD(b, a%b) 이 성립한다. a = 24, b = 18 일때 GCD(24,18) = GCD(18, 6) = GCD(6, 0) = 6으로 최대 공약수는 6이 나온다. 이때 24 = 4 x 6, 18 = 3 x 6 (6은 최대 공약수, 4와 3은 서로소) 에서 최소 공배수는 4 x 3 x 6이므로 (24 x 18) / 6 으로 구할 수 있다. 그러므로 최대 공약수는 GCD(a,b)로 구하고 최소 공배수는 a x b / GCD(a,b) 로 구한다. 출처 https://www.acmicpc.net/problem/2609

[JAVA/자바] 백준 1934번: 최소공배수 [내부링크]

문제 풀이 출처 https://www.acmicpc.net/problem/1934

[JAVA/자바] 백준 10430번: 나머지 [내부링크]

문제 풀이 문제 요구사항만 잘 출력해주면 되는 쉬운문제 출처 https://www.acmicpc.net/problem/10430

[JAVA/자바] 백준 11656번: 접미사 배열 [내부링크]

문제 풀이 출처 https://www.acmicpc.net/problem/11656

[JAVA/자바] 백준 11655번: ROT13 [내부링크]

문제 풀이 1. toCharArray()를 사용하여 입력받은 문자열을 char형 배열로 만든다. 2. N보다 크거나 같은 수 이면 -13을 해주고(N이 78이다. N부터 13을 더해줬을 때 90을 넘어간다.) N보다 작으면 +13을 해준다. 출처 https://www.acmicpc.net/problem/11655

[JAVA/자바] 백준 10824번: 네 수 [내부링크]

문제 풀이 숫자 하나당 범위가 1000000 이라서 int를 사용하면 NumberFormatException 에러가 나므로 Long을 사용해야한다! 출처 https://www.acmicpc.net/problem/10824

[JAVA/자바] 백준 10820번: 문자열 분석 [내부링크]

문제 풀이 몇개를 입력 받을지 정해지지 않아서 당황했던 문제! 이때 사용하는 것이 EOF(End Of File)이라고 한다. BufferedReader를 사용 할 때는 아래와 같이 EOF처리를 해준다. 출처 https://www.acmicpc.net/problem/10820

[JAVA/자바] 백준 2743번: 단어 길이 재기 [내부링크]

문제 풀이 출처 https://www.acmicpc.net/problem/2743

[JAVA/자바] 백준 10808번: 알파벳 개수 [내부링크]

문제 풀이 골드 풀다가 브론즈 푸니까 소화 잘 되는 기분(?) 문제는 엄청 단순하다! 알파벳 개수만큼 배열을 만들고 해당 문자 - 'a' 를 한 인덱스 값에 숫자를 하나씩 더해주면 해당 문자열의 알파벳 빈도수가 저장되고, 배열 원소값을 하나씩 출력해주면 된다! 출처 https://www.acmicpc.net/problem/10808

[JAVA/자바] 백준 10809번: 알파벳 찾기 [내부링크]

문제 풀이 앞서 풀었던 알파벳 개수와 비슷한 문제! 이번엔 빈도수가 아닌 해당 알파벳의 위치를 넣는 문제다. 1. 26개의 원소를 갖는 배열을 -1로 초기화 시킨다. 2. 해당 알파벳 위치에 현재 인덱스를 넣는다. 3. 이때 배열 값이 -1이 아니라면 continue한다. (처음 등장하는 위치를 기준으로 하기 때문에, -1이 아니라면 전에 같은 알파벳이 나왔던 거다.) 출처 https://www.acmicpc.net/problem/10809

[JAVA/자바] 백준 17298번: 오큰수 [내부링크]

문제 풀이 와.. 어렵다! 생애 첫 백준 골드 문제를 풀다.. 골드가 골드했다 처음 내 풀이는 queue를 사용하여 for문을 2번 돌려 시간초과 에러가 났다. 시간 복잡도 O(N²)이 분명했다^^ 어떻게 풀지 감이 잘 안 잡혀서.. 블로그를 참고해서 풀었다. 1. arr 배열에 입력을 순서대로 받는다. 2. arr 배열의 마지막 인덱스부터 for문을 돌려 stack 가장 위에 있는 값이 현재 arr 배열 값보다 작거나 같으면 stack에서 pop한다. (while문 반복) 3. stack이 비어있다면(arr 현재 값 보다 큰 값이 없다면) answer배열에 -1을 넣는다. 4. stack이 비어있지 않다면(arr 현재 값 보다 큰 값이 존재한다면) answer배열에 stack.peek()값을 넣는다. 참고 블.......

[JAVA/자바] 백준 17299번: 오등큰수 [내부링크]

문제 풀이 전에 풀었던 오큰수와 같은 흐름의 문제라서 나름(?) 쉽게 풀었다. 달라진 점이 있다면 이번에는 숫자의 빈도수를 비교하는 것이다. 1. 1000001 크기를 가지는 fre라는 배열을 만든다. (원소의 크기가 1~1000000, 처음에 N으로 잡았는데 런타임 에러가 났다.) 2. arr배열 원소들의 빈도수를 fre에 저장한다. 3. 현재 원소의 빈도수와 stack에 들어있는 원소의 빈도수를 비교해준다! 출처 https://www.acmicpc.net/problem/17299

[JAVA/자바] 백준 1935번: 후위 표기식2 [내부링크]

문제 풀이 런타임 에러 때문에.. 생각보다 엄청 엄청 오래 걸린 문제다! 후.. stack.push(numArr[str.charAt(i) - 'A']); 이렇게 간단하게 구현할 수 있는 부분을 나는 서너줄로 코드를 짰더니 계속 에러가 났다ㅠ 맞왜틀;;;; 그리고 처음에 float을 사용해서 틀렸었다! 범위가 -20억~20억 이라서 double을 사용해야한다. 출처 https://www.acmicpc.net/problem/1935

[JAVA/자바] 백준 1918번: 후위 표기식 [내부링크]

문제 풀이 이번문제는 중위 표기식에서 후위 표기식으로 바꾸는 것! 어려웠다.. 여러 블로그를 참고했는데 정리하자면 1. A~Z문자를 만나면 출력한다. (피연산자) 2. 연산자를 만나면 stack에 push해준다. 이때 현재 문자가 '('이 아니면서 stack에 push된 연산자가 현재 연산자보다 우선순위가 높으면 출력한다. (우선순위가 높은 순서대로 계산되어야 함) 3. ')'를 만나면 '('를 만날 때까지 출력한다. (괄호 안에 있는 식이 우선순위) 4. for문을 다 돌면 stack에 남은 연산자들을 출력한다. 출처 https://www.acmicpc.net/problem/1918

[JAVA/자바] 백준 10799번: 쇠막대기 [내부링크]

문제 풀이 문제를 보고 처음엔 이게 뭔소린가.......싶었다... 굿노트에 그림 그려가면서 겨우겨우 이해했던 문제 1. '('를 만나면 push 한다. 2. ')'를 만나면 pop한다. 3. 이때 레이저라면(이전 문자가 '(' 라면) stack size를 더해주고, 파이프 끝이라면(이전 문자가 ')' 라면) 1을 더해준다. 출처 https://www.acmicpc.net/problem/10799

[JAVA/자바] 백준 17413번: 단어 뒤집기 2 [내부링크]

문제 풀이 단어뒤집기 1 과 유사한 문제다! 추가된 조건 사항은 '<'부터 '>' 까지 있는 문자는 뒤집지 않는다. 내 해결방법은 1. '<' 를 찾는다. 2. stack이 비어있지 않다면 pop한다. 3. j번째 이후의 '>'가 있는 인덱스를 찾는다. 4. '<'부터 '>' 까지 StringBuffer에 저장한다. 5. j를 idx로 갱신한다. 출처 https://www.acmicpc.net/problem/17413

[JAVA/자바] 백준 10845번: 큐 [내부링크]

문제 풀이 지난번 스택코드를 참고 해서 풀었다. 구성이 아주아주 비슷하당. 문제에 "정수를 저장하는 큐를 구현한 다음" 이라고 써있드라.. 스택문제에도. 즉 큐를 직접 구현해서 풀라는 게 문제 의도인 것 같다. 처음에 head와 tail의 초기값과 size구하는 식이 헷갈렸는데 다른분들이랑 비슷한 풀이에 아주 뿌듯! push를 하면 tail값이 플러스 되기 때문에 head > tail 이라면 큐가 비어있는 것이다! head를 0으로 초기화 해야 하는 이유는 맨 앞에서 참조해야 하기 때문에!! pop 하면 head값이 1씩 플러스 된다. 출처 https://www.acmicpc.net/problem/10845

[JAVA/자바] 백준 1406번: 에디터 [내부링크]

문제 풀이 문제 정답 비율 26%을 보고 지레 겁 먹었던 문제다.. 일단 다른사람들은 어떻게 풀었나 코드는 안 보고 방향성?만 확인 해보기로 했다. 커서를 기준으로 왼쪽 스택, 오른쪽 스택을 두는 것이 핵심이었다.! (이 풀이는 최백준님 풀이라고 한다) 딱 이 힌트를 얻고 바로 머리속에 그려졌다.. 코드를 쓰면서도 스택 두 개 두는 거 대박적이다.. 감탄하면서 풀었다 ㅋ.ㅋ.ㅋ L : 커서를 왼쪽으로 한 칸 옮김 --> 왼쪽 스택에서 pop한 값을 오른쪽 스택에 push함 D : 커서를 오른쪽으로 한 칸 옮김 --> 오른쪽 스택에서 pop한 값을 왼쪽 스택에 push함 B : 커서 왼쪽에 있는 문자를 삭제함 --> 왼쪽 스택 pop P $ : $라는 문자를 커.......

[JAVA/자바] 백준 1158번: 요세푸스 문제 [내부링크]

문제 풀이 Queue를 사용하여 쉽게 풀린 문제! 1. 1부터 N까지 queue에 넣은 다음 2. K-1번째 까지 queue에서 꺼낸 숫자를 다시 queue에 삽입한다. 3. K번째 숫자는 ", "를 붙인 채 StringBuffer로 반환한다. 4. 마지막 숫자에 붙은 ", "는 제거하고 ">"를 붙인다. 출처 https://www.acmicpc.net/problem/1158

[JAVA/자바] 백준 10866번: 덱 [내부링크]

문제 풀이 "덱"이라는 자료구조 개념을 처음 접한 나에게 좀 버거웠던 문제..ㅎㅎ 그래도 첫번째 제출이 통과 돼서 다행이다ㅠ 이 블로그를 참고해서 풀었다. 아주아주 상세한 설명 덕에 멍청한 나도 이해가 갔다!! 출처 https://www.acmicpc.net/problem/10866

[JAVA/자바] 백준 9012번: 괄호 [내부링크]

문제 풀이 괄호 문제는 프로그래머스에서도 풀어본 경험이 있다. 비슷한 문제가 있었던 거 같다! 여는 괄호( '(' )가 나온 만큼 닫는 괄호( ')' )가 나와야 하는데 닫는 괄호 수 > 여는 괄호 수 이면 stack이 비어있어 에러가 난다. ---(1) 여는 괄호 수 > 닫는 괄호 수 이면 stack에 괄호가 남아있다. ---(2) 쉬운문젠데 시간 단축을 많이 못했다. 어떻게 줄이는거지?! 다 나랑 비슷하게 푼 거 같은디,, 출처 https://www.acmicpc.net/problem/9012

[JAVA/자바] 백준 1874번: 스택수열 [내부링크]

문제 풀이 시간을 꽤 많이 쓴.. 문제다. 첨에 문제 이해가 안 돼서 시간쓰고, "NO"를 출력해야되는 타이밍?을 어떻게 구현할지 몰라서 고민을 많이했던 거 같다. 키포인트는 현재 들어온 값(num)과 start값의 비교였다. start값은 stack에 처음으로 push 될 숫자로, 임의로 정해준 값이다. num값이 start값보다 크거나 같다면 start값부터 num값 까지 stack에 push 해주고, num값이 start값보다 작다면 stack의 가장 윗부분과 num값이 같아야한다. 그래야 순서대로 pop이 가능하기 때문에! stack의 가장 윗부분과 num값이 다르다면 강제종료 해준다! 출처 https://www.acmicpc.net/problem/1874

[JAVA] 백준 11399번: ATM [내부링크]

문제 풀이 어렵지 않았던 문제! 배열에 숫자를 입력 받고 오름 차순 해준 뒤 해당 배열에 이전 배열의 값을 더해줘서 넣어줘서 배열의 총 합을 구하면 쉽게 풀린다. 출처 https://www.acmicpc.net/problem/11399

[JAVA] 백준 11047번: 동전 0 [내부링크]

문제 풀이 코딩테스트에 이런 문제만 나왔으면 좋겠다^^,, 동전 값이 클수록 개수가 최소값이 나오므로 배열의 맨 뒤부터 계산해준다 주어진 값이 배열 값보다 클 때 카운트를 세주면 된다! 원샷원킬이었던 아름다운 문제 오예 실버다 출처 https://www.acmicpc.net/problem/11047

[JAVA] 백준 1541번: 잃어버린 괄호 [내부링크]

-문제 -풀이 풀다가 킹받은 썰 푼다;; 분명 마이너스 다음에 오는 숫자들을 괄호로 묶는 건 알겠는데,, 코드로 어떻게 짜야될지 도저히 감이 안 잡혔다 ^^ 그래서 다른 분 풀이를 참고했는데도 집중을 못했는지 자꾸 정답에 빗나가서 휴,, 마이너스를 기준으로 문자열을 나눈 후 -> 플러스를 기준으로 문자열을 나눠 더한 후 -> 마지막에 더할 땐 -를 붙여준다. 아니 근데 처음에 들어온 값은 어떻게 더해줘!!!???? 고민하다가 슽으레스받음 히히 힌트는 answer의 초기값 설정에 있다. 여기서 주의할 점은 answer의 초기값을 뭐로 할꺼냐. 처음에 -1로 했는데 틀렸다. -1로 시작하는 테스트코드가 있나보다 (가장 처음과 마지막 문자는 숫.......

[JAVA] 백준 13305번: 주유소 [내부링크]

문제 풀이 원리는 어렵지 않다! 가격의 배열 (cost[])의 다음 값과 비교해서 최소값을 찾아 현재 거리(dist[])와 곱해주면 된다! 정답을 확신하고 제출했는데 왜 58점 주냐고 ;; 다른 풀이랑 비교했을 때도 거의 똑같은 흐름의 풀이길래 더 자세히 들여다 보니 dist배열과 cost배열 그리고 min값은 long으로 입력받아야 하는 것이었다.. int배열로는 감당할 수 없는,, 어쨌든 성공! 이 이슈를 오랜 시간 고민 안 해서 다행이다 출처 https://www.acmicpc.net/problem/13305

[JAVA/자바] 백준 10828번: 스택 [내부링크]

문제 풀이 1. 한 방에 맞춘 문제! 스택 개념만 알고있으면 쉽게 풀 수 있다. BufferedWriter 사용해서 출력할 때 스트링형으로 바꿔주지 않으면 이상한 문자들이 나오니까 주의해야한다. 풀이 2. 당연하게 Stack 라이브러리 사용해서 풀었는데 다른 사람들 풀이 보니까 Stack을 직접 구현하셨길래.. 출처 https://www.acmicpc.net/problem/10828

[JAVA/자바] 백준 9093번: 단어 뒤집기 [내부링크]

문제 풀이 1 다른 분들 풀이를 보니 stack으로 구현을 하셨더라! 생각해보니 이 문제는 stack 카테고리 안에 있었던 문제 였느데 내 맘대로 풀었던 거 였음 ㅋ.. 어쩐지 for문 3번은 너무 하쟈나..! 풀이 2 (stack 사용) String str = br.readLine() + "\n"; 여기서 임의로 개행문자 넣어야 되는데 계속 안 넣고 테스트 하다가 시간 오래 걸렸다ㅠㅠ 해당 문장에서 문자를 만나면 push해주고 의 띄어쓰기와 \n을 만나면 가장 위에 있는 값이 StringBuffer에 들어가도록 하였다. stack으로 풀려니까 뭔가 더 어려웠다.. 그리고 반복문은 줄질 않네.,, 시간도 더 오래 걸린다! 출처 https://www.acmicpc.net/problem/9093

[JAVA] 백준 15904번: UCPC는 무엇의 약자일까? [내부링크]

문제 UCPC는 '전국 대학생 프로그래밍 대회 동아리 연합 여름 대회'의 줄임말로 알려져있다. 하지만 이 줄임말이 정확히 어떻게 구성되었는지는 아무도 모른다. UCPC 2018을 준비하던 ntopia는 여러 사람들에게 UCPC가 정확히 무엇의 줄임말인지 물어보았지만, 아무도 정확한 답을 제시해주지 못했다. ntopia가 들은 몇 가지 답을 아래에 적어보았다. Union of Computer Programming Contest club contest Union of Computer Programming contest Club contest Union of Computer Programming contest club Contest Union of Collegiate Programming Contest club contest Union of Collegiate Programming contest Club contest Union.......

[JAVA] 프로그래머스 Level 3. 가장 먼 노드 [내부링크]

문제 n개의 노드가 있는 그래프가 있습니다. 각 노드는 1부터 n까지 번호가 적혀있습니다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하려고 합니다. 가장 멀리 떨어진 노드란 최단경로로 이동했을 때 간선의 개수가 가장 많은 노드들을 의미합니다. 노드의 개수 n, 간선에 대한 정보가 담긴 2차원 배열 vertex가 매개변수로 주어질 때, 1번 노드로부터 가장 멀리 떨어진 노드가 몇 개인지를 return 하도록 solution 함수를 작성해주세요. 풀이 담주에 코딩테스트를 하나 신청해서 다시 프로그래머스로 돌아왔다. 3단계는 역시 다르군아..문제를 보고 백지가 되어따.. 사실 이 분의 풀이 참고를 많이 했당 boolean형 이차원 배열을 선언해.......

[JAVA] 프로그래머스 Level 3. 네트워크 [내부링크]

문제 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오. 풀이 아직도 dfs 문제에 적응 못한 사람 나야나ㅠㅠ 볼 때마다 어려워!! [1,1,0],[1,1,0],[0,0,1] boolean형 배열 visited를 n개로.......

[JAVA] 백준 1543번: 문서 검색 [내부링크]

문제 풀이 자꾸 stringindexoutofboundsexception 오류나서 애먹었다;; str길이는 11인데 substring할 때 그 길이를 넘어가서 오류가 난 것! 그래서 길이가 넘어가면 반복문 중단해줌 알고리즘은 간단한데 예외찾는데 시간이 좀 걸렸다.! 그리고 프로그래머스에서 다시 백준으로 넘어온 이유는,, 프로그래머스 풀다가 스트레스병 날 거 같았당 ㅎㅎ 난 딱 이수준이 좋아,, 출처 https://www.acmicpc.net/problem/1543

[JAVA] 백준 2217번: 로프 [내부링크]

문제 풀이 처음엔 배열 없이 풀 수 있지 않을까?? 싶었는데 아무래도 안 되겠더라 ㅎ,, 내 아이디어는 예를 들어 10 16 40이 있을 때 10*3, 16*2, 40*1 중 가장 큰 값을 찾자! 이다. 오름차순 정렬도 상관없는데 내림차순으로 풀었다! 내맘임 출처 https://www.acmicpc.net/problem/2217

[JAVA] 백준 2828번: 사과 담기 게임 [내부링크]

문제 풀이 내게 꽤나 도전적이었던 문제. 바구니가 차지하는 부분을 left와 right로 지정해주면 풀기가 편해진다.. umm..예를 들어 입력이 9 4 3 7 4 6 이라고 하면 맨 처음 입력 받은 7에 대해 distance는 7 - 4 = 3, left = 4, right = 7이 된다. 그 다음 입력 받은 4에 대해 if문과 else if문에 해당되지 않으므로 distance = 3 + 0 그 다음 입력 받은 6에 대해 if문과 else if문에 해당되지 않으므로 distance = 3 + 0 + 0 이 된다. 그림으로 그려보면서 풀면 이해가 쉽다! 이 문제에 한시간 반이상 썼는데 제출 시간이 적게 걸려서 내심 좋았다. 출처 https://www.acmicpc.net/problem/2828

[JAVA] 백준 1789번: 수들의 합 [내부링크]

문제 풀이 간단명료한 문제에 비해 엥 어떻게 풀지..싶었던 문제! N이 최대값이 되려면 서로다른 숫자들이 다 최소값이어야한다! 이거슨..수열의 합??!! 그래서 근의 공식을 사용했다 ! 중3때 근의근의 공식공식 노래 외운게 아직도 생각난다ㅠ 수열의 합과 근의 공식만 안다면 쉽게 풀리는 문제다. 이때 입력 받는 수 N을 int로 받으면 런타임 에러가 나니 조심조심 하자구. 출처 : 백준

[JAVA] 백준 1439번: 뒤집기 [내부링크]

문제 풀이 0에서 1이 되는 구간과 1에서 0이 되는 구간이 몇번 씩 있는지 count해서 더 적은 구간이 답이 되도록 풀었다. 이때 맨 마지막 문자에 대해서는 count가 되지 않으므로 임의로 0또는 1을 붙여준다. 출처 : 백준

[JAVA] 백준 4796번: 캠핑 [내부링크]

문제 풀이 문제에 대한 식은 빨리 세웠으나, 입출력에서 시간을 많이 쓴 문제다. 특히 출력에서 ArrayList를 쓰는 것보다 BufferWriter를 쓰는 것이 코드도 짧아지고 메모리, 시간도 절약된다! 처음에는 L * (V / P) + (V % P) 이 식만 생각하고 풀었는데, 입력 값이 [123 456 789] 이면 789%456 값이 123 보다 커지므로 나머지 값을 더하는 게 아닌 L값을 더해야 한다는 것을 알게되었다. 출처 https://www.acmicpc.net/problem/4796

[IntelliJ]인텔리제이 단축키 [내부링크]

내가 보려고 쓰는 인텔리제이 단축키. (계속 추가 될 예정) shift + tab : 왼쪽으로 탭 이동 ctrl + alt : 파일 이동 ctrl + B 또는 ctrl + 클릭 : 해당 함수 이동 ctrl + E : 최근 목록 ctrl + shift + T : 테스트 클래스 자동 생성 ctrl + alt + T :메소드 생성 ctrl + alt + V : optional 생성 ctrl + alt + F10 : 테스트(@Test) 실행 ctrl + D : 복붙 shift + alt + F10 : 이전 실행 ctrl + alt + L : 정렬 ctrl + shift + F : 전체 파일에서 find ctrl + shift + R : 전체 파일에서 replace ctrl + alt + shift + J : 해당 파일에서 같은 단어 동시에 수정하기

[JAVA] 백준 14659번: 한조서열정리하고옴ㅋㅋ [내부링크]

문제 풀이 처음엔 배열을 써야 하나 생각했는데 배열을 사용하면 메모리 차지가 크기 때문에 입력받는 수를 바로 비교하는 방법을 사용했다! BufferReader 사용법을 찾아보다가 https://st-lab.tistory.com/43 요기서 배열을 사용했을 때와 사용하지 않았을 때의 메모리와 시간 차이가 확연하게 차이 난다는 것을 알게 되었다. 출처 : 백준

[JAVA] 백준 10162번: 전자레인지 [내부링크]

문제 풀이 가장 작은 수 10으로 나눴을 때 나누어 떨어지지 않는 다면 -1을 출력하는 방식.! 백준에서 자바로 제출 할 때 클래스 이름을 무조건 Main으로 해야 컴파일 에러가 나지 않는다. 그리고 입력받고 출력할 때 BufferReader와 BufferWriter가 Scanner와 sysout에 비해 상대적으로 빠르다 -BufferReader -BufferWriter 풀이 날짜 : 2021/07/14 출처 : 백준

[JAVA] 백준 2720번: 세탁소 사장 동혁 [내부링크]

문제 풀이 전자레인지 문제랑 거의 유사하다고 생각하고 배열로 풀었는데 다른 사람들 풀이 보니까 배열로 안 풀어도 되는 거 보고 다시 풀었다! StringBuilder로 푼 문제...시간이 거의 반으로 줄어들었당ㅇㅇ....... 글고 훨씬 깔끔하고 보기좋다ㅠ 근데 자바가 c++이랑 파이썬 풀이에 비해 확실히 느리고 메모리 차지가 많은 것 같음 쩔수! 풀이 날짜 : 2021/07/14 출처 : 백준

[JAVA] 백준 2810번: 컵홀더 [내부링크]

문제 풀이 내가 푼 백준 문제들 중 가장 쉽게 풀린 문제. 단순히 S 좌석을 세고 + L 좌석을 센 후 2로 나눈 값에 + 1을 더하면 컵홀더의 개수가 나온다. 이때 컵홀더를 사용할 수 있는 사람의 수는 좌석 수와 컵홀더 수 중 최솟값이다. 출처 : 백준

[JAVA] 백준 2839번: 설탕 배달 [내부링크]

문제 풀이 내가 푼 백준 문제 중 가장 더럽게 푼 문제(?) 아 이건 다시 풀어봐야겠다. 어디 내놓기 부끄럽네 출처 : 백준

[JAVA] 백준 5585번: 거스름돈 [내부링크]

문제 풀이 풀이는 간단하다.. T가 0이 될때 까지 나누고 count를 올려준다. 배열에 넣고 풀면 코드 길이가 2배는 줄어들듯. 출처 : 백준

[JAVA] 프로그래머스 Level 1. 시저 암호 [내부링크]

문제 풀이 char[] a = s.toCharArray(); // 문자열을 문자배열로 변환 두 번째 for문 안에서 n번 만큼 알파벳을 플러스 해준다. 아스키코드 단골 문제 소문자 대문자 전환하기 ㅋ ㅋ 대문자 65~90 소문자 97~122 숫자 48~57 맨날 까먹는다.... String answer = new String(a); //문자 배열을 문자열로 변환 풀이 날짜 : 2021/06/23 출처 : 프로그래머스

[JAVA] 프로그래머스 Level 1. 자릿 수 더하기 [내부링크]

문제 풀이 String numString = String.valueOf(n); // int형을 String으로 변환 주어진 n을 String으로 변환하고 substring 메소드를 사용해서 한 자리씩 더해준다. 풀이 날짜 : 2021/06/23 출처 : 프로그래머스

[JAVA] 프로그래머스 Level 1. 핸드폰 번호 가리기 [내부링크]

문제 풀이 반복문 안에서는 StringBuffer~~!!! 풀이 날짜 : 2021/06/23 출처 : 프로그래머스

[JAVA] 프로그래머스 Level 1. 행렬의 덧셈 [내부링크]

문제 풀이 배열 덧셈.. 이산수학이랑 선형대수 들을 때 징글징글하게 풀었는데 살짝 반갑네^^ 처음에 이 문제가 행의 크기 = 열의 크기 라고 생각해서 틀렸는데 알고 보니까 arr1의 행의 크기 = arr2의 행의 크기 arr1의 열의 크기 = arr2의 열의 크기 이 말이었다 ~! 풀이 날짜 : 2021/06/22 (이 날 8개 풂.. 최고 기록이다 출처 : 프로그래머스

[JAVA] 프로그래머스 Level 1. 수박수박수박수박수박수? [내부링크]

문제 풀이 StringBuffer에 관하여.. 반복문 안에서 문자열 더하기(+)는 피하자 (매번 스트링 객체를 만들어내므로 new 연산자를 계속 연산한다 -> 느려진다.) StringBuffer sb = new StringBuffer(); //선언 방법 StringBuffer : 동기화 지원, 멀티쓰레드 환경에서 안정 StringBuilder : 동기화 지원 X, 단일쓰레드에서 두각 append() : 문자열 추가 insert(0, "") : 원하는 index에 문자열 추가 delete(시작 인덱스, 끝 인덱스) deleteCharAt(지우고 싶은 번호) sb.reverse(); // 순서 반대로 StringBuffer라는 걸 이번에 자바로 문제 풀어보다가 처음 알게 되었는데 아주 유용한 친구다 반복문안에서 절대 사수해!! 풀이 날.......

[JAVA] 프로그래머스 Level 1. 약수의 합 [내부링크]

문제 풀이 이 문제의 키포인트는 시간초과 방지인데 n을 2로 나누거나 n에 루트를 씌워야 한다! 풀이 날짜 : 2021/06/22 출처 : 프로그래머스

[JAVA] 프로그래머스 Level 1. 두 정수 사이의 합 [내부링크]

문제 풀이 간단한 문제에 비해 꽤나 길어진 코드. 다른 분들 풀이 보니까 for(int i = Math.min(a,b); i <= Math.max(a,b); i++) answer += i; 이렇게 두 줄로 끝나더라....... 분발하자!!^^ 풀이 날짜 : 2021/06/22 출처 : 프로그래머스

[JAVA] 프로그래머스 Level 1. 나누어 떨어지는 숫자 배열 [내부링크]

문제 풀이 배열 정렬 : Arrays.sort(arr) ArrayList 정렬 : Collections.sort(arr) 내림차순 : Arrays.sort(arr, Collections.reverseOrder()) //이때 int가 아닌 Integer 타입이어야 함. 풀이 날짜 : 2021/06/22 출처 : 프로그래머스

[JAVA] 프로그래머스 Level 1. x만큼 간격이 있는 n개의 숫자 [내부링크]

문제 풀이 x부터 시작해서 x만큼 증가하는데 이때 n개의 수가 들어간다는 한 가지 조건이 더 있어서 for문 안에 두 가지 조건을 넣었다! 맞다 이 문제 long 안 쓰면 통과 못함 다른 사람 풀이 answer[0] = x; for(int i = 1; i < n; i++){ answer[i] = answer[i-1] + x; } 넘나 씽크빅이다;;;;; 어떻게 이런 생각을 하지 별 거 아닌 거 같아도 보기 쉽게 알고리즘을 생각해 내는 건 증말 대단해 풀이 날짜 : 2021/06/22 출처 : 프로그래머스

[JAVA] 프로그래머스 Level 1. 평균 구하기 [내부링크]

문제 풀이 평균구하기...컴공이라면 10번이상 풀어 봤을 법한 알고리즘이다. 정수 실수만 유의해주면 쉽게 풀림 풀이 날짜 : 2021/06/21 출처 : 프로그래머스

[JAVA] 프로그래머스 Level 1. 2016년 [내부링크]

문제 풀이 엄청 헤맸던 기억이 있는 문제다 처음에 switch문으로 해결하려다가 잘 안되길래 구글링의 도움을 받았..크흠 day랑 month를 배열로 저장 해 놓는다는 힌트를 얻고 1월 1일 부터 며칠 뒤인지 계산 하고 그 수를 7로 나눈 나머지를 사용하여 요일을 구할 수 있었다! 1%7 = 1이라서 day 배열의 1번째 인덱스에 금요일을 기준으로 나열했다. 풀이 날짜 : 2021/06/21 출처 : 프로그래머스

[JAVA] 프로그래머스 Level 1. 직사각형 별 찍기 [내부링크]

문제 풀이 별찍기...삼각형 만들기 디게 많이 했지 요것두 과정 생략! nextInt() : 정수의 입력을 받는다. 풀이 날짜 : 2021/06/21 출처 : 프로그래머스

[JAVA] 프로그래머스 Level 1.같은 숫자는 싫어! [내부링크]

문제 풀이 배열의 현재 인덱스 값과 다음 인덱스 값이 같지 않으면 현재 인덱스 값을 리스트에 추가한다! 반환 값 원래 int형인데 내가 임의로 바꿔버렸다. ㅎㅎ 다른 문제에 다른 사람 풀이 보니까 바꿔도 문제 없길래 ^^..(구구절절) 이 문제 다른 사람 풀이 보니까 씽크빅한 게 정말 많았다.. 어쩜 이런 풀이를 생각하지~! 세상은 넓고 천재는 많다... 풀이 날짜 : 2021/06/21 출처 : 프로그래머스

[JAVA] 프로그래머스 Level 1. 서울에서 김서방 찾기 [내부링크]

문제 풀이 String 변수의 레퍼런스를 비교 할 때 : == String 변수의 저장하는 문자열이 같은 지 비교 할 때 : equals 풀이 날짜 : 2021/06/22 출처 : 프로그래머스

[JAVA] 프로그래머스 Level 1. 소수 찾기 [내부링크]

문제 풀이 소수 그냥 1부터 돌려서 하나씩 찾으면 되는 거 아닌가? 했다가 큰 코 다친 문제ㅜ 이 문제는 에라토스테네스의 체를 이용해서 풀어야 한다..!! 분명 겨울에 강의 들었던 거 같은데 다 까먹음 ㅎㅎ 급하게 패드보고 아 이런거였지 ~ 했다.. 그치만 코드로 구현 절대 못하고 ^^ 열심히 구글링! 에라토스테네스의 체 알고리즘은 간단하게 2의 배수 소거, 3의 배수 소거, 4의 배수 소거...배수들을 소거하고 남는 수가 소수다! 이런 흐름이다. 일단 입력 받은 숫자 n까지 하나씩 배열에 넣고 배수가 되는 부분에 0을 넣는다. ~!! 그러고 값이 0이 아닌 것을 세어주면 정답! 풀이 날짜 : 2021/06/22 출처 : 프로그래머스

[JAVA] 프로그래머스 Level 1. 두 개 뽑아서 더하기 [내부링크]

문제 풀이 직관적인 접근 : 배열에서 두 개를 더하고 같은 수가 없다면 arraylist에 추가하고 arraylist의 원소들을 다시 배열에 하나씩 넣는다. indexOf(n) : n이 처음 발견되는 인덱스를 반환하는데 찾지 못할 경우는 -1을 반환한다. (배열에서는 사용 할 수 없지만 ArrayList에서는 사용 가능) 배열 정렬 : Arrays.sort(arr) ArrayList 정렬 : Collections.sort(arr) 풀이날짜 : 2021/06/20 출처 : 프로그래머스

[JAVA] 프로그래머스 Level 1. 짝수와 홀수 [내부링크]

문제 풀이 2로 나눠지면 "Even" 아니면 "Odd"!! 쉬우니까 해설은 생략 풀이 날짜 : 2021/06/21 출처 : 프로그래머스

[Springboot-Jpa]블로그 만들기-20 :: 스프링 작동 원리 [내부링크]

강의 출처 ※유튜브 데어프로그래밍 블로그 프로젝트 59강을 보고 정리한 내용입니다※ 톰켓이 시작 되면 필터들이 메모리에 올라온다. 권한에 대한 필터, 인증에 대한 필터 한글 인코딩에 대한 필터 등등.. 입구에 들어올 때 미리 걸러내야 될 것들을 필터가 걸러준다. 그 다음 디스패처(dispatcher)가 메모리에 올라온다. 디스패처는 사용자들이 주소를 요청할 때 /, /admin, /user 등등의 요청이 들어올 수 있는데 디스패처가 확인을 해서 적절한 컨트롤러에게 요청을 해준다. 즉, 중간에 어떤 주소가 들어오는지 확인을 하고 그 주소에 맞는 컨트롤러를 요청해 주는 역할을 한다. Controller, Service, jpa repository, 영속성 컨텍스트는 요.......

[Springboot-Jpa]블로그 만들기-21 :: 회원수정 [내부링크]

강의 출처 ※유튜브 데어프로그래밍 블로그 프로젝트 60~61강을 보고 정리한 내용입니다※ 회원 수정 절차 1. hear.jsp에 회원 정보를 클릭하면 이동하는 링크를 href = "/user/updateForm"으로 정했었다! 2. UserController.java에서 경로 지정을 해주자~ (principal은 Authentication객체를 갖고온다.) 주소가 /user/updateForm일 때 user아래의 updateForm.jsp를 반환 해준다는 뜻~! 그렇다면 이제 user아래의 updateForm.jsp를 만들어줘야한당 3. updateForm은 joinForm이랑 형식이 비슷하므로 복붙하고 username칸과 email칸에 value="${principal.user.username }" 을 넣어서 본래의 값을 확인한다. use.......

[Springboot]TodoList 만들기 [내부링크]

전체 코드: https://github.com/yeonii98/Springboot-TodoList 초초간단 투두리스트 만들기 ~~ 일정등록과 일정목록 그리고 일정삭제 기능이 있다. todolist의 테이블엔 일정 번호, 일정 내용, 현재 시간이 담기도록 만들었다. (Todo.java) <TodoController.java> http://localhost:8080/todolist 링크로 들어갔을 때 todo.jsp를 반환해준다. 이때 todolist 라는 데이터가 todo.jsp로 전달된다. <todo.jsp> 일정을 추가하는 text 타입의 input의 id는 todo로 지정하고 버튼의 id는 btn-todo로 지정한다. todo라는 변수에 todolist.content(Controller에서 넘어온 todolist)를 담는다. todo의 createDate와 todo를 가져올 수 있다. 삭.......

[JAVA] 프로그래머스 Level 1.내적 [내부링크]

문제 풀이 통과하고 싶은 코테 셤이 있어서 하루에 하나 이상 풀기로 맘 먹은 날,, 젤 쉬운 거 골라서 했군 자바로 코테 문제는 안 풀어봐서 length랑 length()랑 size랑 헷갈렸는데 zz 정리하며는 length : 배열의 길이 length() : 문자열의 길이 size() : 컬렉션프레임워크 타입의 길이 (ArrayList, Set) c++보다 자바가 더 쉬운 듯하다. 풀이 날짜 : 2021/06/20 출처 : 프로그래머스

[Springboot-Jpa]블로그 만들기-19 :: 글 삭제 및 수정 [내부링크]

강의 출처 ※유튜브 데어프로그래밍 블로그 프로젝트 57~58강을 보고 정리한 내용입니다※ 삭제 1. board.js init : function()에 추가 데이터를 날릴 게 없으니 data와 contentType은 삭제하고 type은 DELETE로 한다. $("#id")는 detail.jsp의 요 id를 갖고 오는거임 2. BoardApiController 3. BoardService 4. detail 수정과 삭제는 본인 글에서만 할 수 있으므로 게시판의 id와 로그인된 id가 같을 때 수정과 삭제 버튼이 나오도록 한다. 수정 1. detail.jsp 수정 버튼에 버튼 태그가 아닌 링크를 걸어준다. (수정을 누르면 그 링크로 이동하기위해) <a href="/board/${board.id }/updateForm" class=".......

[Springboot-Jpa]블로그 만들기-15 :: 스프링 시큐리티 로그인 [내부링크]

강의 출처 ※유튜브 데어프로그래밍 블로그 프로젝트 47~52강을 보고 정리한 내용입니다※ <스프링 시큐리티 로그인 방법> porm.xml에서 아래 두개 주석 해제 시큐리티 라이브러리를 설치하면 홈페이지 어느 곳을 가든지 스프링 시큐리티가 가로채서 로그인 화면으로 가게 만든다. <%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %> header.jsp에 추가 isAuthenticated(): 인증이 되었는지 안 되었는지 확인해준다. <c:when test =" ${empty principal}" > 로 수정. principal안에 로그인 정보가 들어간다고 생각 인증이 안 된 사용자들이 출입할.......

[Springboot-Jpa]블로그 만들기-16 :: 글 쓰기 [내부링크]

강의 출처 ※유튜브 데어프로그래밍 블로그 프로젝트 53강을 보고 정리한 내용입니다※ detail.jsp : 글 상세보기 saveForm : 글 쓰기 updateForm : 글 수정하기 부트스트랩4와 서머노트를 사용해서 글쓰기 화면을 디자인 해준다. 1. BoardController header.jsp에 추가 2. saveForm.jsp 만들기 <textarea class="form-control summernote" rows="5" id="content"></textarea> class에 summernote추가해서 script에서 .summernote로 찾기. 그리고 saveForm에 <button id="btn-save" class="btn btn-primary">글쓰기 완료</button> <scri.......

[Springboot-Jpa]블로그 만들기-17 :: 글 목록과 페이징 [내부링크]

강의 출처 ※유튜브 데어프로그래밍 블로그 프로젝트 54~55강을 보고 정리한 내용입니다※ 글 목록 1. BoardController 스프링에서 데이터를 가져갈 때 model이 필요하다. request.setAttribute()와 비슷한 역할이라고 함 출처 index 페이지로 "boards"가 날라간다. @Controller는 viewResolver가 작동하는데 viewResolver가 작동하면 해당 index페이지로 model의 정보를 들고 이동한다. viewResolver는 prefix와 suffix를 앞뒤로 붙여줌 2. BoardService 3. index 위에서 collection을 들고 index페이지로 오기 때문에 boards를 items로 받을 수 있다. 한 건 씩 board라는 변수에 집어 넣어서 ${board.title}(=board.getTitle()).......

[Springboot-Jpa]블로그 만들기-18 :: 글 상세보기 [내부링크]

강의 출처 ※유튜브 데어프로그래밍 블로그 프로젝트 56강을 보고 정리한 내용입니다※ 1. index <a href="/board/${board.id }" class="btn btn-primary">상세보기</a> 상세보기를 클릭했을 때 넘어가는 주소를 정해준다. 2. BoardController id에 맞는 board의정보가 board에 들어가구 board를 들고 board/detail로 간다. 3. BoardService 4. detail

[C/C++] 코드업 기초 100제 1001~1010 [내부링크]

1001 1002 1003 1004 1005 1006 1007 1008 1010 //"를 출력하려면?---> \" //% 기호가 앞에 ...

[C/C++] 코드업 기초 100제 1011~1020 [내부링크]

1011 1012 1013 1014 1015 1017 1018 1019 1020 //cin.ignore(1,':') 입력스트림에서 1개의 문자...

[C++] 코드업 기초 100제 1021~1030 [내부링크]

1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 cout << fixed;//소숫점 아래 값을 고정한다. c...

[C++] 코드업 기초 100제 1031~1040 [내부링크]

1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 //8진수 앞에서 숫자 0 //16진수 앞에 숫자 0x //%o를...

[C++] 코드업 기초 100제 1041~1050 [내부링크]

1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 //cout<<uppercase; 16진수를 대문자로 출력 //...

[C++] 코드업 기초 100제 1051~1060 [내부링크]

1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 //비트연산자 ~는 0과 1을 바꾼다 https://codeup.kr/

[C++] 코드업 기초 100제 1061~1070 [내부링크]

1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 https://codeup.kr/

[C++] 코드업 기초 100제 1071~1080 [내부링크]

1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 https://codeup.kr/

[C++] 코드업 기초 100제 1081~1090 [내부링크]

1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 이 문제 역시 int로 잡으면 오류가 나는 상황이 생긴...

[C++] 코드업 기초 100제 1091~1099 [내부링크]

1091 1092 1093 1094 1095 1096 1097 1098 설탕과자 뽑기 두번째로 오래걸렸던 문제 사탕뽑기 ^...

[JSP]게시판 만들기 1강 :: Hello word! 화면에 띄우기 [내부링크]

도움-※유튜브 동빈나 강좌※ 참고-JSPStudy의 JSP&Servlet 웹 프로그래밍 입문 + 활용 1강. ...

[JSP]게시판 만들기 2강 :: 로그인 화면 구축 [내부링크]

도움-※유튜브 동빈나 강좌※ 참고-JSPStudy의 JSP&Servlet 웹 프로그래밍 입문 + 활용 디자인...

[JSP]게시판 만들기 3강 :: 회원 데이터베이스 구축 [내부링크]

도움-※유튜브 동빈나 강좌※ 참고-JSPStudy의 JSP&Servlet 웹 프로그래밍 입문 + 활용 MyS...

[JSP]게시판 만들기 4강 :: 로그인 기능 구현 [내부링크]

도움-※유튜브 동빈나 강좌※ 참고-JSPStudy의 JSP&Servlet 웹 프로그래밍 입문 + 활용 jsp에...

[JSP]게시판 만들기 5강 :: 회원가입 페이지 디자인 [내부링크]

도움-※유튜브 동빈나 강좌※ 참고-JSPStudy의 JSP&Servlet 웹 프로그래밍 입문 + 활용 login....

[JSP]게시판 만들기 6강 :: 회원가입 기능 구현 [내부링크]

도움-※유튜브 동빈나 강좌※ 참고-JSPStudy의 JSP&Servlet 웹 프로그래밍 입문 + 활용 Java ...

[JSP]게시판 만들기 7강 :: 접속한 회원 세션 관리 [내부링크]

도움-※유튜브 동빈나 강좌※ 참고-JSPStudy의 JSP&Servlet 웹 프로그래밍 입문 + 활용 세션이...

[JSP]게시판 만들기 8강 :: 메인 페이지 디자인 [내부링크]

도움-※유튜브 동빈나 강좌※ 참고-JSPStudy의 JSP&Servlet 웹 프로그래밍 입문 + 활용 게시판...

[JSP]게시판 만들기 9강 :: 게시판 데이터베이스 구축 [내부링크]

도움-※유튜브 동빈나 강좌※ 참고-JSPStudy의 JSP&Servlet 웹 프로그래밍 입문 + 활용 데이터...

[JSP]게시판 만들기 10강 :: 글쓰기 기능 구현 [내부링크]

도움-※유튜브 동빈나 강좌※ 참고-JSPStudy의 JSP&Servlet 웹 프로그래밍 입문 + 활용 글쓰기...

[JSP]게시판 만들기 11강 :: 게시판 글 목록 기능 구현 [내부링크]

도움-※유튜브 동빈나 강좌※ 참고-JSPStudy의 JSP&Servlet 웹 프로그래밍 입문 + 활용 게시판...

[JSP]게시판 만들기 12강 :: 게시글 보기 기능 구현 [내부링크]

도움-※유튜브 동빈나 강좌※ 참고-JSPStudy의 JSP&Servlet 웹 프로그래밍 입문 + 활용 해당 ...

[JSP]게시판 만들기 13강 :: 게시글 수정 및 삭제 기능 구현 [내부링크]

도움-※유튜브 동빈나 강좌※ 참고-JSPStudy의 JSP&Servlet 웹 프로그래밍 입문 + 활용 BbsD...

[JSP]게시판 만들기 14강 :: 웹 사이트 메인 페이지 디자인 [내부링크]

이제 밋밋한 메인 페이지를 꾸며줄 거다! 메인 페이지에 들어갔을 때 사용자가 웹페이지의 전반적인 구성을...

알고리즘 공부 일지 - 1 (with 동빈나) :: 선택정렬 [내부링크]

공부 날짜 : 1/1 공부 진도 : 실전 알고리즘 강좌 1~6강 <2강 선택 정렬> 알고리즘은 소스코드보다 ...

알고리즘 공부 일지 - 2 (with 동빈나) :: 버블정렬 [내부링크]

공부 날짜 : 1/1 공부 진도 : 실전 알고리즘 강좌 1~6강 <3강 버블 정렬> 버블 정렬은 옆에 있는 값...

알고리즘 공부 일지 - 3 (with 동빈나) :: 삽입정렬 [내부링크]

공부 날짜 : 1/1 공부 진도 : 실전 알고리즘 강좌 1~6강 <4강 삽입정렬> 삽입 정렬은 숫자를 적절한 ...

알고리즘 공부 일지 - 4 (with 동빈나) :: 퀵정렬 [내부링크]

공부 날짜 : 1/1 공부 진도 : 실전 알고리즘 강좌 1~6강 <5강 퀵 정렬> 퀵정렬은 분할 정복 알고리즘...

알고리즘 공부 일지 - 5 (with 동빈나) :: 백준 2750번,2752번 [내부링크]

공부 날짜 : 1/3 공부 진도 : 실전 알고리즘 강좌 7~9강 <7강 기초 정렬 문제 풀이> https://www.acm...

알고리즘 공부 일지 - 6 (with 동빈나) :: 병합 정렬 [내부링크]

공부 날짜 : 1/3 공부 진도 : 실전 알고리즘 강좌 7~9강 <8강 병합 정렬> 병합 정렬도 퀵 정렬과 같...

알고리즘 공부 일지 - 7 (with 동빈나) :: C++ STL sort() [내부링크]

공부 날짜 : 1/3 공부 진도 : 실전 알고리즘 강좌 7~9강 <9강 C++STL sort()> C++에서 제공하는...

알고리즘 공부 일지 - 8 (with 동빈나) :: C++ STL sort()2 [내부링크]

공부 날짜 : 1/7 공부 진도 : 실전 알고리즘 강좌 10~13강 <10강 C++ STL sort()> 9강에서 배운 ...

알고리즘 공부 일지 - 9 (with 동빈나) :: 힙정렬 [내부링크]

공부 날짜 : 1/7 공부 진도 : 실전 알고리즘 강좌 10~13강 <11강 힙정렬> 힙정렬은 병합 정렬과 퀵 ...

알고리즘 공부 일지 - 10 (with 동빈나) :: 계수 정렬 [내부링크]

공부 날짜 : 1/7 공부 진도 : 실전 알고리즘 강좌 10~13강 <12강 계수 정렬> 계수 정렬은 '범위...

알고리즘 공부 일지 - 11 (with 동빈나) :: 백준 1181번, 1431번, 10989번 [내부링크]

공부 날짜 : 1/7 공부 진도 : 실전 알고리즘 강좌 10~13강 <13강 알고리즘 문제풀이> ※BOJ 백준 ...

알고리즘 공부 일지 - 12 (with 동빈나) :: 스택(Stack) [내부링크]

공부 날짜 : 1/9 공부 진도 : 실전 알고리즘 강좌 14~17강 <14강 스택> 스택은 LIFO(Last In ...

알고리즘 공부 일지 - 13 (with 동빈나) :: 큐(Queue) [내부링크]

공부 날짜 : 1/9 공부 진도 : 실전 알고리즘 강좌 14~17강 <15강 큐> 큐는 FIFO(First In Fir...

알고리즘 공부 일지 - 14 (with 동빈나) :: 너비 우선 탐색 (BFS) [내부링크]

공부 날짜 : 1/9 공부 진도 : 실전 알고리즘 강좌 14~17강 <16강 너비우선탐색 BFS> 너비 우선 탐...

알고리즘 공부 일지 - 15 (with 동빈나) :: 깊이 우선 탐색 (DFS) [내부링크]

깊이 우선 탐색은 스택을 사용하지만 실제로 스택을 사용 안 하고 재귀함수만 이용해도 DFS 구현이 가능...

[C++]백준 1260번: DFS와 BFS [내부링크]

문제는 알고리즘 분류에서 그래프 탐색에서 제일 첫번째 문제 dfs와 bfs의 결과가 같이 나와야한다. https:...

알고리즘 공부 일지 - 16 (with 동빈나) :: 합집합 찾기 [내부링크]

공부 날짜 : 1/12 공부 진도 : 실전 알고리즘 강좌 18~19강 <18강 합집합 찾기> 합집합 찾기는 서로...

알고리즘 공부 일지 - 17 (with 동빈나) :: 크루스칼 알고리즘 [내부링크]

공부 날짜 : 1/12 공부 진도 : 실전 알고리즘 강좌 18~19강 <19강 크루스칼 알고리즘> 크루스칼 알고...

알고리즘 공부 일지 - 18 (with 동빈나) :: 이진 트리 구현 및 순회 알고리즘 [내부링크]

공부 날짜 : 1/14 공부 진도 : 실전 알고리즘 강좌 20~23강 <20강 이진 트리 구현 및 순회 알고리즘>...

알고리즘 공부 일지 - 19 (with 동빈나) :: 다이나믹 프로그래밍 [내부링크]

공부 날짜 : 1/14 공부 진도 : 실전 알고리즘 강좌 20~23강 <21강 다이나믹 프로그래밍> 다이나믹 프...

[C++]백준 2606번: 바이러스 [내부링크]

문제 출처 : https://www.acmicpc.net/problem/2606 분명 처음부터 결과 잘만 나왔는데 이상하게 백준에 제...

[C++] 백준 2178번: 미로 찾기 [내부링크]

문제 출처 : https://www.acmicpc.net/problem/2178 푸는 데 세 시간 걸린 문제! 처음에 어떻게 접근해야 ...

스프링 부트 개념 정리 -1 [내부링크]

유튜브를 찾아보다가 또 괜찮은 강의를 찾아냈다! 스프링 부트를 공부해 보고 싶어서 들어봤는데 개념 설명...

스프링 부트 개념 정리 -2 [내부링크]

https://youtu.be/ajZIPOv31yE 1. JPA는 Java Persistence API이다. Persistence : 영속성 -...

스프링 부트 개념 정리 -3 [내부링크]

https://youtu.be/pifmwZWWbuY 스프링은 내장 톰켓을 가진다 즉, 톰켓을 따로 설치할 필요 없이 실행이...

스프링 부트 개념 정리 -4 [내부링크]

https://youtu.be/GCx65TdiA44 ※Response(응답) 하는 방법 요약※ 전체적인 그림 그리기 톰겟을 실행...

[Springboot-Jpa]블로그 만들기-1 :: Postman 실습 [내부링크]

https://www.youtube.com/watch?v=6lSMCAq-fYg&list=PL93mKxaRDidECgjOBjP...

[Springboot-Jpa]블로그 만들기-2 :: Maven, lombok [내부링크]

https://www.youtube.com/watch?v=jtur8oAAXYg&list=PL93mKxaRDidECgjOBjPg...

[Springboot-jpa]블로그 만들기-3 :: yaml이란? [내부링크]

https://www.youtube.com/watch?v=U9OnYKiSf4g&list=PL93mKxaRDidECgjOBjP...

[Springboot-Jpa]블로그 만들기-4 :: DAO, DTO, yml [내부링크]

https://www.youtube.com/watch?v=6ynr-XAI-rk&list=PL93mKxaRDidECgjOBjPg...

[JSP]게시판 게시글 조회수 기능 구현 [내부링크]

전체 코드 : https://github.com/yeonii98/Board-Project 1. bbs테이블에 int형 bbsCount 칼럼을 추가해준다. 2. Bbs에도 bbsCount 게터세터 추가 3. bbsDAO에는 어떻게 추가할까요~? 우선 하나의 글 내용을 불러오는 함수 getBbs에 7열에 해당하는 값을 저장하는 bbsCount를 ++을 해주고 countUpdate함수를 이용해 db에 bbsCount 값을 넣어주어요~ 선택한 게시글을 보여주는 view.jsp페이지에서 getBbs함수를 사용하니 bbsCount가 1씩 올라가겠지요~ 4. 이제 화면에 보이게 해보자 bbs.jsp에 열 추가만 하면 됨. 5. 해당 게시물로 들어갔을 때마다 +1이 되므로 view.jsp파일에는 bbs.getBbsCount() + 1를 해준다. (왜인지는 정확히 모르겠다.ㅜ.......

[JSP]게시판 게시글 추천 기능 구현 [내부링크]

전체 코드 : https://github.com/yeonii98/Board-Project 이제! 추천 기능을 넣어볼 거예요! 한 달 전에 한 건데 미리미리 쓸걸!!!! 1. likey라는 테이블을 만들어줍니다. 2. likey 게터 세터도 넣어주고 3. likeyDAO의 like 함수는? 넘어오는 userID와 bbsID를 받아서 저장해주는 역할만 해요! 그렇다면 실제 좋아요 구현은 어떻게..? 4. BbsDAO에 like함수를 만들어줍니다~! 특정 bbsID에 대해 likeCount를 1씩 늘려주는 함수를 작성합니다. (한 게시글에) 5. 이제 화면에 구현해볼게용 bbs.jsp에 <th style="background-color: #2e8b57; text-align: center;">추천수</th> 를 넣어주고 view.jsp에 <a oncli.......

[JSP]게시판 페이징 처리 [내부링크]

전체 코드 : https://github.com/yeonii98/Board-Project 이전버튼과 다음버튼에 추가로 숫자로 페이징 처리를 만들어봤어요 1. bbsDAO함수에 전체 행 개수를 세는 함수 getCount를 만들어줍니다. 2. 만약에 글이 11개 있다치면 2번 페이지까지 있어야하쥬? bbs.jsp 일부 n = 2. 즉, |1| |2| 와 같은 모양으로 페이징처리가 됩니다.

[JSP]게시판 검색 기능 구현 [내부링크]

참고 블로그 전체 코드 : https://github.com/yeonii98/Board-Project 1. bbs.jsp 페이지에 검색 폼 넣어주기! 아마.. 부트 3에서 긁어온 거 같은데 기억이.. 제목 또는 작성자를 선택해서 검색할 수 있게 select 박스를 넣어주자! 2. 검색 버튼을 누르면 이동하는 페이지를 만들기 위해 dao 함수를 먼저 만들자! select 박스에 있는 값과 검색어를 받고 검색어가 빈 값이 아닌 경우에 sql 문에 검색어를 포함하는 모든 게시글을 찾는 문장을 넣는다. 이때 사용하는 것이 LIKE.. 즉 select 조건에 맞는 검색어를 찾아 모든 칼럼을 보여준다. sql 문 때문에 엄청 고생했지 이거 땜에.. 3. 검색을 눌렀을 때 나오는 화면을 구현하장 (searchbbs.jsp.......

[Springboot-Jpa]블로그 만들기-12 :: ajax를 사용하는 이유, 서비스가 필요한 이유 [내부링크]

https://www.youtube.com/watch?v=oOJR2XCagdA&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=35 ※유튜브 데어프로그래밍 블로그 프로젝트 35~40강을 보고 정리한 내용입니다※ 자바스크립트 파일은 정적인 파일이므로 static 폴더 아래에 만들어 준다.! joinForm.jsp의 회원가입 완료 버튼에 id를 넣어준다. <button id="btn-save" class="btn btn-primary">회원 가입 완료</button> 스크립트 문장도 넣어줌 <script src="/blog/js/user.js"></script> 이제 user.js를 작성하자 .on("이벤트 종류", 이벤트가 수행되면 무엇을 할 것.......

[Springboot-Jpa]블로그 만들기-13 :: 트랜잭션이란? DB격리란? 스프링의 기존 방식 개선 [내부링크]

https://www.youtube.com/watch?v=FbeU3ZHgOhs&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=41 ※유튜브 데어프로그래밍 블로그 프로젝트 41~45강을 보고 정리한 내용입니다※ 트랜잭션이란? 일이 처리되기 위한 가장 작은 단위 유튜브 1강을 만들기 위해.. 1. 강의 준비 2. 영상 찍기 3. 영상 업로드 1,2,3이 묶여서 하나의 트랜잭션 여러개의 트랜잭션이 모여서 하나의 트랜잭션으로 묶을 수 있는데 이를 스프링에서 서비스하고 한다. DB격리란? 오라클 - read commit 사용 -> update를 하고 commit(트랜잭션 종료)을 하면 undo영역(데이터베이스가 갖고있는 이전 영역)이 바뀌고 select를 하면 바뀐 데이테를 읽.......

[Springboot-Jpa]블로그 만들기-14 :: 전통적인 로그인 [내부링크]

강의 출처 ※유튜브 데어프로그래밍 블로그 프로젝트 46강을 보고 정리한 내용입니다※ <전통적인 로그인 방법> -UserApiContent -UserRepository.java JPA Naming 쿼리 User findByUsernameAndPassword(String username, String password); 를 작성하면 다음과 같은 쿼리 문장이 실행된다. SELECT * FROM user WHERE username = ?1 AND password = ?2 또 다른 방법 @Query(value="SELECT * FROM user WHERE username = ?1 AND password = ?2", nativeQuery = true) User login(String username, String password); -UserService @Transactional(readOnly = true) // Select할 때 트랜잭션이.......

[C++] 백준 2667번: 단지 번호 붙이기 [내부링크]

문제 출처 https://www.acmicpc.net/problem/2667 참고한 블로그 https://blockdmask.tistory.com/175 그냥 포기 할까 하다가 다시 풀어본 문제.. 그치만 위 블로거님의 코드를 많이 참고했다ㅠ 넘나 어려운것 그래서 bfs는 기존 코드를 변형 하는 거니까 혼자 풀어봤다. 메모리 초과 계속 나서 당황;; 문제가 참 어렵다^^ 같은 유형의 bfs dfs문제여도 하나 풀어봤다고 다 아는 게 아닌듯.. passOrnext 함수는 map을 검사해서 1인 경우만 addressNum을 +1 해준다. (왜 함수로 만들 생각을 못했을까)이때 dfs 함수로 넘겨주면 번지별로 번호가 매겨진다. 그럼 이제 map 배열에서 2이상인 값을 addressArray에 넣어주면 됨 map[0]=2의 개수, .......

[Springboot-Jpa]블로그 만들기-5 :: 연관관계, JSON을 사용하는 이유 [내부링크]

https://www.youtube.com/watch?v=DtMmXQl4_hw&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=22 ※유튜브 데어프로그래밍 블로그 프로젝트 22~23강을 보고 정리한 내용입니다※ 연관관계의 주인 = FK를 가진 오브젝트 ManyToOne의 기본전략 : EAGER 타입 : Board테이블을 가져올 때 무조건 가져온다. OneToMany의 기본전략은 LAZY. 들고와도 되고 안 들고 와도 된다. 게시글에 댓글을 넣을 때 board 테이블에 reply의 id가 들어가지 않는다. OneToMany의 기본전략은 LAZY이지만 게시글을 불러오면 무조건 댓글목록도 불러와야 하기 때문에 EAGER타입을 사용한다. 연관관계의 주인을 정해서 테이블의 FK를 관리하.......

[Springboot-Jpa]블로그 만들기-6 :: JpaRepository, Enum [내부링크]

https://www.youtube.com/watch?v=w0hF91Xs--4&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=24 ※유튜브 데어프로그래밍 블로그 프로젝트 24~25강을 보고 정리한 내용입니다※ 데이터베이스에 insert 하기위해 패키지와 인터페이스를 만든다. JpaRepository<User, Integer> : User테이블이 관리하는 Repository고 User 테이블의 PrimaryKey는 integer다. JpaRepository가 갖고 있는 findAll : User테이블의 모든 행을 다 리턴 save함수 : insert와 update 가능 findById함수 : id로 행을 찾기 count함수 : user 테이블의 행이 몇 갠지? deleteById함수 : id로 행 삭제 기본적인CRUD를 하고 싶으면 위와 같이 정.......

[C++] 백준 1012번: 유기농 배추 [내부링크]

https://www.acmicpc.net/problem/1012 이 문제에 대한 접근은 최근에 풀었던 문제와 비슷해서 나름 쉽게 접근할 수 있었는데.. 또 또 하나 때문에 엄청난 시간이 걸렸다;;; vector를 사용 하는 것이 익숙하지 않은 탓인듯 하다..ㅠㅠ https://hyeonstorage.tistory.com/324 → 이 분의 블로그에 vector 설명이 아주 잘 되어있다:) 아 그리고 함수를 사용했을 때와 그냥 main에 때려박았을 때의 처리시간이 꽤 난다는 것을 느꼈음..(코드는 길어지지만...) 함수를 유용하게 사용해야겠다! 저번 코드랑 dfs나 passOrnext함수는 거의 똑같고 main만 신경써주면 됐다. 처음부터 vector를 사용할걸 아쉬움만 남는 문제였다 ㅎ,,ㅜㅜㅜ vector는 배열.......

[Springboot-Jpa]블로그 만들기-7 :: 페이징 처리 연습 [내부링크]

https://www.youtube.com/watch?v=z_yxfFUX1xI&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=26 ※유튜브 데어프로그래밍 블로그 프로젝트 26~27강을 보고 정리한 내용입니다※ {id}로 주소로 파라미터를 전달 받을 수 있다. @PathVariable를 이용해서 @GetMapping에 들어간 {id}와 동일한 id를 파라미터로 받아 URL 경로에 변수를 넣어준다. 출처 findById의 리턴타입이 Optional인 이유: user/4을 찾으면 내가 데이터베이스에서 못찾아오게 되면 user가 null이 된다. 그럼 return null이 리턴이 되고 프로그램에 문제가 생긴다. 그러므로 Optional로 User 객체를 감싸서 가져와 null인지 아닌지 판단해서 return 한.......

[Springboot-Jpa]블로그 만들기-8 :: @PutMapping으로 수정하기 [내부링크]

https://www.youtube.com/watch?v=oijoJtiGPhI&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=28 ※유튜브 데어프로그래밍 블로그 프로젝트 28~29강을 보고 정리한 내용입니다※ email과 password update(수정)하는 방법 update는 @PutMapping사용. json데이터를 받기위해 @RequestBody 사용. json데이터를 요청하면 Java Object(MessageConverter의 Jackson라이브러리가 변환해서 받아준다.이때 필요한 어노테이션이 @RequestBody다.)로 변환해서 받아준다. save함수는 id를 전달하지 않으면 insert를 해주고 id를 전달할 때 해당 id에 대한 데이터가 있으면 update를 하고 해당 id에 대한 데이터가 없으면 insert를 한.......

[Springboot-Jpa]블로그 만들기-9 :: delete test [내부링크]

https://www.youtube.com/watch?v=vOXgQYX7nok&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=30 ※유튜브 데어프로그래밍 블로그 프로젝트 30~31강을 보고 정리한 내용입니다※ delete하는 방법을 알아봅시다 ㅎㅎ id는 1인 데이터를 삭제 id는 5인 데이터를 삭제 http://localhost:8000/blog/dummy/user/1을 실행하면 1을 삭제했기 때문에 위와같은 화면이 나온다. 이 페이지를 간단하게 처리하기 위해 handler 패키지와 그 아래 클래스를 만들고 @ControllerAdvice : 어디에서든 exception이 발생하면 여기로 넘어오게끔 만든다. 이제 다시 실행해보면 갈끔하게 에러 메시지가 나오는 것을 확인! 모든 exception을 예.......

[Springboot-Jpa]블로그 만들기-10 :: 스프링 기본 파싱 전략 [내부링크]

https://www.youtube.com/watch?v=gt17FdIl-3w&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=32 ※유튜브 데어프로그래밍 블로그 프로젝트 32강을 보고 정리한 내용입니다※ <스프링 기본 파싱 전략> 1. get요청이란? 주소에 데이터를 넣어 요청하는 것. (select) 예를 들면 http://localhost:8000/blog/user?username=ssar 와 같이 요청 get요청의 특징은 body로 데이터를 담아 보내지 않는다는 것. 웹브라우저로 요청하는 것은 다 get요청이다. 2. Post, Put, Delete 요청이란? 데이터를 변경하는 것. (insert, update, delete) 데이터를 담아보내야 할 것이 많다. username, password, email, address, .......

[Springboot-Jpa]블로그 만들기-11 :: 기본 화면 구현하기 [내부링크]

https://www.youtube.com/watch?v=f2IXBWi_8sA&list=PL93mKxaRDidECgjOBjPgI3Dyo8ka6Ilqm&index=33 ※유튜브 데어프로그래밍 블로그 프로젝트 33~34강을 보고 정리한 내용입니다※ <기본 화면 구현하기> 1. BoardController 만들기 2. 내용 작성하기 http://localhost:8000/blog or http://localhost:8000/blog/ 주소를 넣으면 WEB-INF/views/index.jsp 파일을 불러온다. 3. index.jsp 파일 만들기 4. 부트스트랩4 사용하기 https://www.w3schools.com/bootstrap4/default.asp navbar - Collapsing The Navigation Bar footer - BS4 Basic Template card - <div class="card m-2" > 마진 2로.......

[JSP]게시판 댓글 기능 (입력,수정, 삭제) [내부링크]

참고했던 블로그 전체 코드 : https://github.com/yeonii98/Board-Project 1. 먼저 comment 테이블을 만들어준다. 2. view.jsp에 댓글 칸 추가하기(댓글 수정 및 삭제 버튼도 포함) 3. 댓글 쓰기를 누르면 실행되는 action 페이지 구현 (submitAction.jsp) action 페이지의 일부입니다. <jsp:useBean id="comment" class="comment.Comment" scope="page"/> commetDAO의 write 함수 구현 4. 수정 버튼을 누르면 commentUpdate.jsp 페이지로 이동한다. (이동을 하지 않는 비동기식 댓글 작성도 해보고 싶다!!) view.jsp에서 댓글 목록이랑 댓글 쓰기 부분만 수정해 준다. 댓글 수정 버튼을 누.......

[JSP]게시판 회원 정보 수정 및 탈퇴 기능 구현 [내부링크]

전체 코드 : https://github.com/yeonii98/Board-Project 1. 회원 관리에서 로그아웃 밑에 '내 정보'라는 메뉴 만들기 2. 내 정보를 보여주는 페이지 userUpdate.jsp 만들기 3. 수정과 탈퇴를 구현하는 함수 userDAO에 추가하기 update : 특정 userID에 대해 나머지 사항들을 변경해준다. delete : 특정 userID에 대해 user 테이블에서 삭제해준다. 4. 수정하기 액션 페이지 userUpdateAction.jsp UserDAO의 update함수를 사용. 5. 탈퇴하기 액션 페이지 userDeleteAction.jsp UserDAO의 delete함수 사용. 탈퇴에 성공하면 성공 메시지를 남겨준다.