전체 글 132

[자바 웹 개발 워크북] 2장: 웹과 데이터베이스

2-1 JDBC 프로그래밍 준비 데이터베이스는 데이터를 보관하고 관리를 하는 소프트웨어이다. 보통 우리가 사용하는 데이터베이스는 관계형 데이터베이스로, MySQL, MariaDB, PostegreSQL이다. 먼저 MariaDB 웹사이트에서 다운로드를 받았고, 사용자 계정을 추가하였다. 데이터베이스를 추가적으로 생성하였고, 방금 만든 사용자 계정에 권한을 추가하였다. 이후 MariaDB를 사용해보기 위하여 프로젝트를 생성하였다. IntelliJ에서 MariaDB에 접근하기 위해서 SQL문을 이용하여 실행하였다. JDBC란? JDBC는 'Java Database Connectivity'의 약자로서, 자바 프로그램과 데이터베이스를 네트워크 상에서 연결하여, 데이터를 교환하는 프로그램이다. JDB..

[Python 3] BOJ 8983 사냥꾼

오늘 풀어볼 문제는 '사냥꾼'이라는 문제이다. 알고리즘: binary search 서브태스크 문제란 문제의 input size나 특정 조건을 부여해서, ~~~한 상황일때, AC를 받는다를 확인할 수 있다. 백준에서 '맞았습니다!' 판정을 받기 위해서는, 모든 서브태스크, 즉 케이스를 통과해야 한다. 결국, '추가적인 제약 조건은 없다'의 40점어치를 맞춰야 결국 맞았습니다! 인 것이다. 우선, 문제에서는 총을 쏠 수 있는 사대들을 준다. 사대들에서 택시 거리로 L 만큼 떨어져있는 곳까지 총을 쏠 수 있다. 사대는 (X, 0)의 위치에 있기 때문에, 동물들과 사대의 x좌표를 비교해서, 동물과 제일 가까운 x좌표를 정한다. 바로 이 때, 동물의 수가 10만까지 가능하고, 사대의 개수가 10만개까지 있을 수 ..

[자바 웹 개발 워크북] 1장: 웹 프로그래밍의 시작

기존에 장고를 가지고 몇 번 제작을 해봤었는데, 자바 스프링으로 새롭게 코딩을 진행해보려고 한다. 이 책을 ebook으로 구매했고, 해당 책의 커리큘럼에 따라서 정리해볼 예정이다. 책에 있는 코드를 그대로 작성하는게 아니라, 내가 생각했을 때 더 중요하다고 생각이 드는 부분은 더 공부를 해서 정리해서 작성하려고 한다. 1.1 자바 웹 개발 환경 만들기 먼저, 웹 프로젝트의 기본적인 구조가 제시되어 있다. 웹 프로젝트는 브라우저, 서버, 데이터베이스의 상호연결로 이루어져있다.결국 브라우저는 서버에서 전달한 결과를 화면에 렌더링하고, 사용자의 작동을 통해 서버와 데이터를 주고받는다. 이때 사용자가 서버에 보내는 것을 요청 (Request), 서버가 사용자에게 보내는 것을 응답 (Response) (사용자 입..

[Python 3] LEETCODE 2962. Count Subarrays Where Max Element Appears at Least K Times

한국말로 번역하자면, "당신은 정수로 이루어진 배열인 nums와 양의 정수 k 가 주어진다. 부분 수열 중 nums의 제일 큰 값이 최소 k번 이상 위치한 부분 수열의 개수를 return하라 여기서 부분 수열이란 배열 내 연속적인 원소들의 나열이다." 여기서 슬라이딩 윈도우 알고리즘을 사용하여 문제를 해결하였다. 슬라이딩 윈도우 알고리즘이란, 투 포인터 알고리즘의 일부이다. 슬라이딩 원도우는 연속되어있는 두개의 포인터가 사용되어 특정 조건을 해결하는 알고리즘이다. 여기서 정확히 말하면 슬라이딩 윈도우의 약간의 변형이다. 만약 해당 배열에서 제일 큰 원소의 값을 M이라고 하였을 때, 오른쪽 포인터가 M인 경우에는 슬라이딩 윈도우가 적용되어 왼쪽에 있는 포인터가 오른쪽으로 이동하지만, 만약 M이 아닌 경우에..

[Python 3] BOJ 15989 1,2,3 더하기 4

https://www.acmicpc.net/problem/15989 15989번: 1, 2, 3 더하기 4 정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 4가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 합을 이루고 있는 수의 순서만 다른 것은 같은 것으로 친다. 1+1+1+1 2+1+1 (1+1+2, 1+2+1) 2+2 www.acmicpc.net 전형적인 다이내믹 프로그래밍 문제이다. t=int(input()) for _ in range(t): n=int(input()) dp=[[1e10,0,0,0] for _ in range(10001)] dp[1][1]=1 dp[2][1]=1 dp[2][2]=1 dp[3][1]=2 dp[3][3]=1 if n

[Python 3] BOJ 2818 숙제하기 싫을 때

https://www.acmicpc.net/problem/2818 2818번: 숙제하기 싫을 때 상근이는 숙제가 너무 하기 싫어서, 숙제 한 달치를 걸고 창영이와 게임을 하기로 했다. 진 사람은 한 달동안 숙제 두 명분을 해야 한다. 상근이는 영리하게 자신이 어렸을 때, 하던 게임을 하자 www.acmicpc.net 구현 문제이다. 처음에는, 4개의 행 마다 같은 패턴이 반복된다고 생각했었다. 1번행 2번행 3번행 4번행 1번행 ... 하지만 이는 오답이다. 꼭 4행마다 패턴이 반복되는 것은 아니였다. 하지만, 한 행에서 4개 이상의 열이 존재하면, 이는 반복된다. 예를 들어, 1,4,6,3,1,4,6,3,.... 이런 식으로 말이다. dice=[4,5,1,2,6,3] dx=[0,0,1] dy=[1,-1..

Python: Counter

https://docs.python.org/ko/3/library/collections.html#counter-objects collections — Container datatypes Source code: Lib/collections/__init__.py This module implements specialized container datatypes providing alternatives to Python’s general purpose built-in containers, dict, list, set, and tuple.,,... docs.python.org Python의 collections 라이브러리에서 있는 Counter (계수기) 객체이다. 카운터는 해시가능한 객체들을 세는 딕셔너리의 서..

[Python 3] 프로그래머스 Lv. 3 n+1 카드게임

https://school.programmers.co.kr/learn/courses/30/lessons/258707?language=python3 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr def delete_card(a,b,t): for i in a: if t-i in b: a.remove(i) b.remove(t-i) return True return False def solution(coin, cards): answer=1 n=len(cards) mycard=[cards[i] for i in range(n//3)] index=n//3 leftov..

[SQL] 프로그래머스 조건에 부합하는 중고거래 댓글 조회하기

https://school.programmers.co.kr/learn/courses/30/lessons/164673 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr SELECT B.TITLE, B.BOARD_ID, R.REPLY_ID, R.WRITER_ID, R.CONTENTS, DATE_FORMAT(R.CREATED_DATE,"%Y-%m-%d") AS CREATED_DATE FROM USED_GOODS_BOARD AS B INNER JOIN USED_GOODS_REPLY AS R ON B.BOARD_ID = R.BOARD_ID WHERE B.CREATED..