전체 글

전체 글

    [Vue+BootStrap] b-table에서 특정 컬럼 클릭 시 이벤트 걸기(세부사항 페이지로 이동)

    [Vue+BootStrap] b-table에서 특정 컬럼 클릭 시 이벤트 걸기(세부사항 페이지로 이동)

    {{ data.item.subject }} { key: "articleno", label: "글번호", thClass: "w10" }, { key: "subject", label: "제목", thClass: "w60" }, { key: "hit", label: "조회수", thClass: "w10" }, { key: "userid", label: "작성자", thClass: "w10" }, { key: "regtime", label: "작성일", thClass: "w10", formatter: (value, key, item) => { return moment(new Date(value)).format("YY.MM.DD"); }, }, b-table를 사용할 때 필드와 데이터를 태그안에 넣어서 사용하는 ..

    [Spring] 인프런 스프링 입문 강의 정리 #3

    [Spring] 인프런 스프링 입문 강의 정리 #3

    [무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 글에서 나오는 모든 코드와 사진들은 김영한님의 인프런 스프링 입문 강의에서 가져온 것임을 미리 알립니다. 회원 관리 예제 - 백엔드 개발 비지니스 요구사항 정리 비지니스 요구사항은 가장 쉽게 구성되어있다. 그래서 데이터, 기능 모두 간단하게 구성되어있다. DB는 아직 정해지지 않은 상황 컨트롤러: 웹 MVC의 컨트롤러 역할 서비스: 핵심 비즈니스 로직 구현 리포지토리: 데이터베이스에 접근, 도메인 객체를 DB에 저장하고 관리 도메인: 비즈니스 ..

    [BJ] 백준 21610 마법사 상어와 비바라기 (JAVA)

    [BJ] 백준 21610 마법사 상어와 비바라기 (JAVA)

    문제 https://www.acmicpc.net/problem/21610 풀이 방법 문제에 따라서 순서대로 차근차근 구현해갔다. 문제에서 주목해야할 점은 1. 구름이 이동할 때 범위에 신경써야 하는 것 2. 대각선 방향을 확인할때의 범위는 또 다르게 적용된다는 것 3. 한꺼번에 처리하려다가 오히려 잘못된 값이 나올 수 있다는 점 이 세가지인 듯 하다. 나는 구현하는 건 어렵지 않았지만 3번 때문에 디버깅하는데 조금 시간이 걸렸다. 그리고 격자도 그렇고, 방향도 그렇고 인덱스 1부터 시작하는걸 나는 0부터 시작하는 걸로 수정해서 구현했다. 전제적인 과정을 정리하면 다음과 같다. 1. 처음에 구름 생성해주기 2. M번 이동 실행하기 1) 모든 구름을 올바른 방향으로 이동 시키기 2) 물의 양 증가시키기 3)..

    [BJ] 백준 20058 마법사 상어와 파이어스톰 (JAVA)

    [BJ] 백준 20058 마법사 상어와 파이어스톰 (JAVA)

    문제 https://www.acmicpc.net/problem/20058 풀이 방법 풀이 순서를 차분하게 정하고 코드로 구현만 한다면 생각보다 간단한 문제였다. 1. 우선 처음에 해야하는건 부분 격자로 나누고, 그 안에 있는 요소를 시계방향으로 회전 시켜준다. 2. 주변에 얼음이 없는 칸을 찾고, 만약 얼음이 없는 칸이 3개 미만이면 해당 위치의 얼음의 개수를 -1 해준다. 여기서 주의해야할 점이 얼음의 개수를 바로바로 업데이트해주면 안된다. 1 2 4 1 3 4 3 4 5 이런 형태에서 얼음을 제거할때 만약 얼음의 개수를 바로바로 적용을 시켜준다면 결과가 원하는대로 나오지 않는다. 만약 바로 적용시켜준다면 0 2 3 0 3 4 2 4 4 이런 형태가 될텐데 이렇게 하면 제대로 정답이 나오지 않고, 제대..

    [SSAFY] 싸피 SSAFY 7기 1학기 종강 및 후기

    [SSAFY] 싸피 SSAFY 7기 1학기 종강 및 후기

    드디어 싸피 1학기 끝이 났다. 6개월이라는 시간이 매우 길고도 짧게 느껴지던 시간이였다. 약 일주일간의 1학기 최종 프로젝트를 마치고 종각식을 오늘 진행하였다. 사실 한달 정도 글을 못올렸는데 한달전에 입원을 해서 2주는 거의 개발이나 공부를 제대로 하지 못했다.... 진짜 예상치도 못한 입원이였기 때문에 생활하는데 너무나도 큰 변화가 생겼고, 아직도 회복중이다. 이제 후기와 관통 프로젝트에 대해서 작성해보려고 한다. 4월 4월에는 거의 알고리즘 + 백엔드 수업 위주였다. 그래서 매일 꾸준히 알고리즘 문제를 풀고, 정규 교육 시간에는 spring, springboot, mybatis을 사용해서 백엔드 공부를 진행하였다. 그래서 더이상 쓸말이...없다...그냥 평범한 싸피 생활의 연속이였다. 5월 거의 ..

    [Spring] JAVA에서 Spring으로 변환 정리 (개인 공부 정리용)

    [Spring] JAVA에서 Spring으로 변환 정리 (개인 공부 정리용)

    스프링 학습 후 개인적으로 정리하기 위한 글이므로 잘못된 부분들이 많을 수 있습니다. 설정 파일들의 읽는 흐름은 pom.xml => (web.xml) => root-context.xml => servlet-context.xml 순이다. 1. pom.xml : 필요한 lib들과 버전들을 추가해서 수정해준다. (db, jsp, junit 등) 2. web.xml post를 사용하려면 그 전에 utf-8로 인코딩을 해줘야지 한글이 제대로 보인다. 그러므로 web.xml에 filter를 추가해줘야한다. encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 encodingFilter /* web.xml 에 적힌 순서..

    [BJ] 백준 2579 계단 오르기 (JAVA)

    [BJ] 백준 2579 계단 오르기 (JAVA)

    문제 https://www.acmicpc.net/problem/2579 풀이 방법 각 계단에는 점수가 있고, 계단을 밟으면 점수를 얻을 수 있다. 대신에 한번에 최대 두 칸까지만 오를 수 있고, 연속한 세개의 계단을 밟을 수 없다. 얻을 수 있는 최대 점수를 구하면 되는 문제다. dp를 사용해서 풀었다. dp[i]의 값은 i번째 계단은 밟는다는 것을 가정하고, i-1번째, i 번째 연속해서 밟는 경우와 i-2번째, i번째 한 칸 뛰어 넘고 밟는 경우 중에서 더 큰 점수를 가진 경우를 저장했다. 연속해서 밟는 경우는 연속 3개는 밟으면 안되기 때문에 dp[i-3]의 값을 더해줘야한다. 제출 코드 import java.io.*; public class BJ_2579_계단오르기 { public static v..

    [알고리즘] 선택 정렬 Selection Sort

    [알고리즘] 선택 정렬 Selection Sort

    설명 원소를 넣을 위치를 정하고,어떤 원소를 넣을지 선택한 후 선택한 원소를 지정한 자리에 넣는 알고리즘이다. 과정 (오름차순 정렬인 경우) 1. 배열의 원소 중에서 최소값을 찾는다. 2. 해당 값을 배열의 맨 앞에 위치한 값과 교환한다. 3. 고른 자리(맨 앞)를 제외한 나머지 배열을 같은 방식으로 반복한다. 구현(Java) public static void sort(int[]arr){ for (int i = 0; i arr[j]){ minIdx= j; } } //지정위치에 있는 ..

    [알고리즘] 거품 정렬 Bubble Sort

    [알고리즘] 거품 정렬 Bubble Sort

    설명 서로 인접한 두 원소의 대소를 비교하고, 조건(오름차순, 내림차순 등)에 맞지 않다면 자리를 교환하면서 정렬하는 알고리즘이다. Selection Sort와 유사하다. 과정 배열의 크기 : N (0~N-1) 1회전은 i=0 부터 i와 i+1번째 원소, 즉 자신과 자신의 오른쪽 수를 비교해서 조건에 맞지 않는다면 서로 교환한다. 1회전이 끝나면 가장 큰 원소가 맨 뒤로 이동해있으므로 다음 회전에서 마지막 원소는 제외된다. 2회전도 i=0부터 1번과 동일하게 수행한다. 그러면 두번째로 큰 수가 마지막에서 두번째에 위치한다. 3회전에서는 동일하게 수행해준다. 0~N-3까지만 확인하게 된다. ⇒ 1회전에서는 0개 제외 ⇒ 2회전에서는 1개 제외 ⇒ 3회전에서는 2개 제외 ⇒ N회전에서는 N-1개 제외 구현(..

    [Spring] 인프런 스프링 입문 강의 정리 #2

    [Spring] 인프런 스프링 입문 강의 정리 #2

    [무료] 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술 - 인프런 | 강의 스프링 입문자가 예제를 만들어가면서 스프링 웹 애플리케이션 개발 전반을 빠르게 학습할 수 있습니다., - 강의 소개 | 인프런... www.inflearn.com 글에서 나오는 모든 코드와 사진들은 김영한님의 인프런 스프링 입문 강의에서 가져온 것임을 미리 알립니다. 정적 컨텐츠 서버에서 하는 거 없이 파일을 그대로 웹브라우저에 내려주는 것. staic폴더 안에 html 파일 생성해주고 다음과 같이 작성 src/main/resources/static/hello-static.html 정적 컨텐츠 입니다. 그리고 http://localhost:8080/hello-static.html 접속해보면 다음과 같은 ..

    [BJ] 백준 2748 피보나치 수2 (JAVA)

    [BJ] 백준 2748 피보나치 수2 (JAVA)

    문제 https://www.acmicpc.net/problem/2748 풀이 방법 피보나치 수의 기본 문제다. n을 입력하면 n번째 피보나치 수를 출력하는 간단한 문제다. 나는 dp를 사용했고 N까지 구해준 뒤 dp[N]을 출력해줬다. 제출 코드 import java.io.*; import java.util.*; public class BJ_2748_피보나치수2 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int N = Integer.parseInt(br.readLine()); long[] dp = new l..

    [BJ] 백준 1003 피보나치 함수 (JAVA)

    [BJ] 백준 1003 피보나치 함수 (JAVA)

    문제 https://www.acmicpc.net/problem/1003 풀이 방법 dp를 활용한 피보나치 관련된 문제다. 재귀호출을 사용해서 피보나치 수열을 구현할 때 0과 1을 호출하는 횟수를 출력해야한다. 그래서 dp배열은 [수][0과1호출수]을 담을 2차원 배열로 선언해줬다. 0일 때는 0호출 한번, 1일때는 1호출 한번이기 때문에 각각 1로 초기화해주고, 입력값의 최대값이 40이였기 때문에 나는 미리 40까지 다 구해주고, n에 따라서 출력해서 사용했다. 2부터 40까지 반복문을 돌리면서 i-1, i-2의 0과 1 호출 횟수를 더한 값을 각각 dp[n]에 저장해줬다. 그 이유는 재귀호출로 피보나치 수열을 구현했을때 처음부터 생각해보자. 그러면 f(2) = f(1) +f(0) 부터 시작할 것이다. ..

    [노마드코더] NextJS 시작하기 #5

    [노마드코더] NextJS 시작하기 #5

    [노마드코더] NextJS 시작하기 #1 [노마드코더] NextJS 시작하기 #2 [노마드코더] NextJS 시작하기 #3 [노마드코더] NextJS 시작하기 #4 [노마드코더] NextJS 시작하기 #5 NextJS 시작하기 – 노마드 코더 Nomad Coders The React Framework for Production nomadcoders.co 지난 강의 요약 Next에서는 pre-rendering된 html 페이지에 데이터가 포함되지 않는다. 컴포넌트의 초기 state를 미리 export하기 때문에 React.js가 처리를 마치기 전까지는 실제 html 소스코드에는 Loading(개발자가 데이터가 없을때 지정한 모습)페이지의 모습을 볼 수 있다. React.js의 처리가 완료되면, ReactJ..

    [노마드코더] NextJS 시작하기 #4

    [노마드코더] NextJS 시작하기 #4

    [노마드코더] NextJS 시작하기 #1 [노마드코더] NextJS 시작하기 #2 [노마드코더] NextJS 시작하기 #3 [노마드코더] NextJS 시작하기 #4 [노마드코더] NextJS 시작하기 #5 NextJS 시작하기 – 노마드 코더 Nomad Coders The React Framework for Production nomadcoders.co 전에 했던 강의에 이어서 이제 로딩페이지를 작업해보려고 한다. 영화 데이터가 담긴 movies변수는 영화데이터를 불러오기 전까지는 빈 배열 상태로 있을 것이다. 왜냐면 우리가 useState를 사용할때 초기값을 []으로 했기 때문에. 그러나 만약 useState();로 하면 오류가 발생한다. 왜냐면 map을 사용하려고 할때 movies가 undefined..

    [노마드코더] NextJS 시작하기 #3

    [노마드코더] NextJS 시작하기 #3

    [노마드코더] NextJS 시작하기 #1 [노마드코더] NextJS 시작하기 #2 [노마드코더] NextJS 시작하기 #3 [노마드코더] NextJS 시작하기 #4 [노마드코더] NextJS 시작하기 #5 NextJS 시작하기 – 노마드 코더 Nomad Coders The React Framework for Production nomadcoders.co 이제 기본 기능들을 알았으니 간단한 영화 앱을 만들어보자. 우선 그 전시간 까지 _app.js를 만들었는데 추가로 Layout컴포넌트를 만들어보도록 하자. Layout컴포넌트는 Next를 사용할 때 사람들이 주로 사용하는 패턴으로, _app.js가 너무 무거워지는 것을 방지하기 위해서 사용한다. components폴더 안에 Layout.js 파일을 생성한..

    [노마드코더] NextJS 시작하기 #2

    [노마드코더] NextJS 시작하기 #2

    [노마드코더] NextJS 시작하기 #1 [노마드코더] NextJS 시작하기 #2 [노마드코더] NextJS 시작하기 #3 [노마드코더] NextJS 시작하기 #4 [노마드코더] NextJS 시작하기 #5 전의 글에 이어서 계속해서 강의내용을 정리하려고 한다. NextJS 시작하기 – 노마드 코더 Nomad Coders The React Framework for Production nomadcoders.co Routing 우선 components 폴더를 생성해서 안에 새로운 파일을 작성해준다. export default function NavBar() { return ( HOME About ); } 그리고 전에 만들었던 index.js와 about.js의 내용을 약간 수정해준다. import NavBar..

    [JO] 정올 1681 해밀턴 순환회로 (JAVA)

    [JO] 정올 1681 해밀턴 순환회로 (JAVA)

    문제 http://jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=954&sca=99&sfl=wr_hit&stx=1681 풀이 방법 태현이는 배달 알바를 하려고 한다. 배달을 하기 위해 방문할 장소가 주어졌을때, 방문하는 순서에 따라서 비용이 달라진다. 최소의 비용을 계산하는 문제이다. 나는 dfs를 사용해서 문제를 풀었다. 0번째부터 시작하면서 모든 경우의 수를 다 따져봤다. 그러면서 시간초과를 막기 위해서 if문으로 끝까지 배달을 못했어도 현재 min값보다 sum의 값이 더 커지면 return을 하면서 백트래킹을 해줬다. 제출 코드 import java.io.*; import java.util.*; public class JO_1681_해밀턴순환회로 { stati..

    [SSAFY] 싸피 7기 3개월 후기

    [SSAFY] 싸피 7기 3개월 후기

    약 3달간 싸피하느라 달려왔는데 조금 여유있을때 후기를 남기려고 한다. 싸피 자체가 보안이 철저하고 외부 유출이 안되는 내용이 많기 때문에 자세하진 않지만 그래도 기록해보려고 한다. 1월 싸피을 시작하고 처음 2주는 스타트 캠프를 진행했다. 임시 반이 배정되고, 거의 팀플 위주로 여러가지 활동들을 진행한다. 스타트캠프가 끝나고 본격적인 커리큘럼이 진행된다. 1월은 절반은 스타트캠프, 그리고 약간의 정규과정으로 후딱 지나간것 같다. 2월 이제 정규과정에 들어서면서 엄청나게 공부량이 많아진다. 전공이다보니 배웠던 내용들도 많았지만, 또 아직 미숙한 부분들이나 여러가지 시험을 또 치루기 때문에 매일매일이 공부의 연속이였다. 6시에 정규 수업시간이 끝나면 저녁 후 실습과 과제를 8시까지 했었다. 또 2월에 반에..

    [BJ] 백준 1012 유기농 배추 (JAVA)

    [BJ] 백준 1012 유기농 배추 (JAVA)

    문제 https://www.acmicpc.net/problem/1012 풀이 방법​ 실버 레벨에 해당하는 문제로 배추의 위치가 주어지고, 인접해있는 배추를 탐색해서 몇개의 배추 구역이 있는지 개수를 구하면 되는 문제다. 4방탐색으로 모든 방향을 돌면서 배추가 존재하는지, 방문했는지의 여부를 판단해야하기 때문에 BFS알고리즘을 사용해서 구현했다. 우선 배추의 위치는 입력값을 토대로 1로 설정해줬다. 그리고 이제 땅을 모두 돌면서 배추가 존재하면서 아직 방문하지 않은 경우 새로운 구역을 발견한 것이기 때문에 구역의 수에 1를 추가해줬다. 인접해있는 배추들을 모두 찾아줘야하기 때문에 Queue를 사용해서 BFS를 구현해줬다. 4방탐색을 하면서 배추이면서 아직 방문하지 않는 칸이 있다면 큐에 추가해주고, 방문 ..

    [BJ] 백준 1065 한수 (JAVA)

    [BJ] 백준 1065 한수 (JAVA)

    문제 https://www.acmicpc.net/problem/1065 풀이 방법 함수 카테고리에 있는 기본 문제다. 나는 한수인지 아닌지 체크해주는 함수를 만들어서 풀이했다. 함수에는 우선 10미만인 수는 모두 한수이기 때문에 true를 반환해주고, 10이상부터는 수를 String으로 변환 후 0번째 값과 1번째 값의 차이를 계산해서 그 차이값을 저장해줬다. 그리고 이제 정수를 한자리수씩 보면서 본인과 그 다음 자리 수의 차이가 이전에 구해놨던 gap과 다르다면 바로 false를 반환해줬다. 그리고 이제 메인함수에서는 true이면 한수이므로 cnt변수에 1를 추가해주었고, 마지막에 cnt를 출력해줬다. 제출 코드 import java.io.*; public class BJ_1065_한수 { public..

    [BJ] 백준 13458 시험감독 (JAVA)

    [BJ] 백준 13458 시험감독 (JAVA)

    문제 https://www.acmicpc.net/problem/13458 풀이 방법 문제는 시험을 보는 반의 개수가 주어지고, 각 반에 학생이 몇명 있는지 주어진다. 총감독과 부감독이 존재하는데 총감독은 1명만 존재해야하고 부감독은 여러명 존재할 수 있다. 총감독이 감시할 수 있는 학생수와 부감독이 감시할 수 있는 학생수가 주어졌을 때 모든 학생을 감시하기 위한 최소 감독 수를 구하는 문제다. 다음과 같은 순서로 풀이했다. 1. N번째 반에서 총 감독관 1명이 존재하므로 sum에 1를 더해준다. 2. 총감독이 감시할 수 있는 학생수를 기존의 학생수에서 빼준다. 3. 남은 학생수가 양수라면 부감독이 감시가능한 학생수를 나눠서 딱 나누어떨어진다면 그 값을, 아니면 1을 더해서 sum에 더해준다. 4. 반의 ..

    [Web] Session과 Cookie

    [Web] Session과 Cookie

    인터넷을 사용해봤다면 Session과 Cookie는 많이 들어봤을 것이다. 쿠키는 뭐 쿠키 삭제하는 경우에 많이 봤을 것이고, 세션은 보통 웹 사이트에서 로그인 해놓고 다른 사이트에서 작업하다가 다시 돌아오면 세션이 만료되어 또는 세션이 끊겼다는 메시지가 뜨면서 다시 로그인하게 만드는 경우에서 봤을 것이다. HTTP Protocol의 특징 쿠키와 세션에 대해서 알아보기 전 HTTP의 특징을 먼저 알고 가면 이해하기 쉽다. HTTP의 순서는 1. client가 server에 요청 2. server는 요청에 대해 처리 후 client에게 처리 결과 응답 3. 응답 후 연결 해제 순서로 작동한다. 응답 후에 연결을 해제하기 때문에 stateless 라는 특징을 가지고 있다. 지속적인 연결로 인한 자원 낭비를 ..

    [SSAFY]웰컴키트 수령 후기!

    [SSAFY]웰컴키트 수령 후기!

    전에 올린 게시글 재업로드입니다. 싸피 7기 입과 후 2주간의 스타트 캠프를 진행했다. 약간 코딩 맛보기와 협업 맛보기라고 생각하면 좋을 것 같다. ​ 나는 데탑을 이번에 새로 맞춰서 데탑으로 수업을 들었기 때문에 웹캠이 없었다. 그래서 빨리 웰컴 키트가 왔으면 했다! 나는 입과 후 바로 주는 줄 알았는데 스타트캠프 이후에 준다ㅠㅠ ​ 1/17일부터 순차적으로 배송이된다고 해서 나는 지방이다보니 수요일정도에 도착하겠거니 생각했다. 그런데 1/18 (화)에 서울에서 싸피 입학식 참여한 후 집에 도착해보니 키트가 와있었다! ​ 카톡방에선 다들 우체국 카톡이 왔다며 우체국으로 배송된다고 그래서 나도 우체국 카톡만을 기다리고 있었는데 나는 우체국이 아닌 다른 택배사에서 왔다 이름은 흔하지 않아서 기억이 안남....

    [BJ] 백준 8958 OX퀴즈 (JAVA)

    [BJ] 백준 8958 OX퀴즈 (JAVA)

    문제 https://www.acmicpc.net/problem/8958 풀이 방법 단순한 1차원 배열 문제다. O가 나올때는 O이 연속한 개수만큼 점수를 더해주면 되고, 만약 X를 만난다면 다시 0으로 초기화해주면 된다. 제출 코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class BJ_8958_OX퀴즈 { public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(Sys..