목록분류 전체보기 (71)
작심 365
문제 : https://www.acmicpc.net/problem/1495 Idea 코드N , S , M = map(int,input().split())V = [0] + list(map(int,input().split()))dp = [[False]*(M+1) for i in range(N+1)]min_v = S - V[1]max_v = S + V[1]if min_v >=0: dp[1][min_v] = Trueif max_v = 0: dp[i][min_v]= Trueresult = -1for k in range(M+1): if dp[N][k]: result = kprint(result)
문제 : https://www.acmicpc.net/problem/2302 Idea고정좌석을 기준으로 배열을 나누고 각 나눠진 배열들에서 자리를 옮기는 경우는 독립적으로 일어나기 때문에 각각의 경우의 수를 구해서 곱하면 된다.그러면 쪼개진 배열에서 자리를 바꿀 수 있는 경우의 수를 구하는 방법만 알면 된다. 만약 쪼개진 배열의 크기가 4라고 하면 [1,2,3,4] 총 4자리가 있다고 볼 수 있다. 이때 자리를 바꿔 앉을 수 있는 경우의 수를 구해야 되는데 그 경우의 수를 구하는 패턴을 찾기 위해 배열의 크기가 1 일때부터 그려봤다.1일때는 그냥 1번 사람이 1번 좌석에 앉는 경우 1가지가 있다.2일때는 1,2번이 자기 자리에 앉는 경우와 둘이 자리를 바꿔앉는 경우 2가지가 있다.3일때는 1,2,3 ..
문제 링크 : https://www.acmicpc.net/problem/1932 Idea 문제에서 구하라고 하는 것은 모든 층마다 수를 하나씩 선택했을때 그 선택한 수들의 합이 최대가 될때의 그 최대값이다.그렇다면 각 층마다 가장 큰 값을 선택하면 되지만, 추가 조건으로 특정 층의 특정 위치의 값을 선택하려면 그 이전 층에서 대각선 위치에 있는 값들만 선택할 수 있다. 즉 위 그림에서 꼭대기를 1층이라고 한다면 3층에 있는 1번을 선택하기 위해서는 2층에 3또는 8을 선택해야되고, 3층에 8을 선택하려면 2층에 3을 무조건 선택해야 한다. 그림으로 보면 대각선 위치가 한눈에 보이지만 이걸 배열로 저장하면 인덱스 때문에 헷갈릴수 있다. 위와같은 형태를 표현하기 위해서는 2차원 배열이 필요하다.dp라는 2..
0/1 Knapsack과 같은 어려운 문제를 풀때 실질적으로 Dynamic Programing과 Brute Force 중 누가 더 낫다고 할 수 없다. 그렇다면 다시 Brute Force로 돌아와서 생각해보면 Brute Force를 구현하는 방법은 대표적으로 다음 두가지가 있다.1. For loop2. Graph 탐색 (DFS, BFS) 여기서 두번째 Graph 탐색에서 DFS 를 활용해 State-Space Tree를 가지고 생각해 보자.간단한 문제 하나를 가지고 State Space를 직접 그려보자. Tree의 가장 마지막 leaf node들이 바로 모든 경우를 나타내게 된다. 이제 백트래킹 문제의 가장 대표적인 문제인 N-Queen 문제를 보자 N-Queen 문제는 NxN 크기의 체스판 위에서 ..
1. Homebrew 공식 홈페이지 HomebrewThe Missing Package Manager for macOS (or Linux).brew.sh 2. Homebrew 란 ?Homebrew는 맥 OS 환경에서 소프트웨어 설치를 쉽게 할 수 있게 해주는 패키지 관리 소프트웨어 이다.맥북을 사면 homebrew 가 기본으로 설치되어 있지 않기 때문에 설치를 해줘야 한다. 3. Homebrew 설치 하기설치는 터미널에서 해당 명령어로 할수 있다./bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 설치가 완료되면 brew install 이라는 명령어를 통해서 소프트웨어를 다운받..
스터디 신청 계기 취업을 준비하면서 CS에 대한 부족함을 느껴서 개념을 다시 한번 정리하고자 CS 스터디를 찾다가 캠퍼스픽에 올라온 JSCODE CS 모의면접 스터디를 알게 되었다. 해당 스터디의 경우는 실제 면접처럼 공부한 내용을 조원들끼리 돌아가면서 질문으로 하고 답하는 식으로 모의면접 방식으로 진행되었다. 과목은 네트워크, 운영체제, 데이터베이스가 있었고 나는 네트워크 과목을 선택했다. 매주 금요일 저녁 2시간씩 진행을 했으며 총 5주동안 진행되었다. 스터디를 통해 얻은것 단순히 CS 개념을 공부하고 거기에 대해 스터디를 하는게 아니라 면접 형식으로 진행해서 말하기 연습에 도움이 많이 되었다. 내가 머릿속으로는 알고있어도 그 내용을 조리 있게 타인에게 설명하는 것은 너무 어려웠다. 어렵고 자신 없는..
문제 링크 : https://www.acmicpc.net/problem/20365 20365번: 블로그2 neighbor 블로그를 운영하는 일우는 매일 아침 풀고 싶은 문제를 미리 정해놓고 글을 올린다. 그리고 매일 밤 각각의 문제에 대하여, 해결한 경우 파란색, 해결하지 못한 경우 빨간색으로 칠한 www.acmicpc.net Idea 우선 문제에서 최소값을 구하라고 하고 있고 규칙만 찾으면 최솟값을 찾을 수 있을것 같은 느낌이 들었다. 좋아 보이는 방법을 적용했을때 그 방법이 local -> global 로 갈때도 적용된다면 Greedy 문제이다. 문제에서 연속된 문제들은 같은 색으로 한번의 칠로 칠할 수 있다고 했으므로 연속된 같은 색끼리 묶을 수 있다. 총 6개로 묶을 수 있고 처음부터 이렇게 칠..
Security 라이브러리 추가 스프링 부트 프로젝트를 생성하고 security 라이브러리를 추가한다. 프로젝트를 빌드하고 실행을 시키면 이런 화면이 나온다. 이것은 스프링에서 라이브러리 추가시 우리가 따로 설정을 하지 않아도 기본으로 security 관련 설정들을 해주기때문이다. 스프링은 우리가 사용할 임시 username 과 password 를 생성해 준다. username 은 user , password는 inetelliJ 실행창에서 확인이 가능하다. SecurityProperties 임시 유저 정보들은 아래 패키지에 속한 SecurityProperties라는 클래스에서 생성해준다. org.springframework.boot.autoconfigure.security SecurityProperti..