전체 글 474

[React]페이지네이션 라이브러리 이용한 구현(react-js-pagination)

React는 SPA(Single Page Application)을 만드는데 최적화되어있다. 별도록 라우팅기능은 제공하지 않지만 react-router라는 라이브러리를 이용하여 라우팅 할 수 있다. 처음에는 직접 구현하려고 했다가 css가 이상해지고 데이터가 이상하게 보였다. 그래서 그냥 라이브러리를 이용하여 구현하기로 했다. 페이지네이션 라이브러리에도 여러개가 있는데 react-js-pagination를 사용했다. npm install react-js-pagination 이제 페이지네이션을 구현해보자! 파일 구조!! 원래 LostFound와 Notice에 BoardList.js가 각자 있었지만 둘다 거의 (99%) 동일한 코드이기 때문에 BoardPage.js를 만들어서 index.js에서 불러주었다. ..

[1주차]구글 클라우드 - 인스턴스 생성,spring 프로젝트 올리기 & 실행

1. Compute Engine -> VM 인스턴스로 들어갑니다. 2. 이름과 리전 머신 유형을 선택합니다. 3. 부팅디스크 설정 - 우분투 20.04 LTS x86/64로 설정합니다. 4. 방화벽과 엑세스 범위를 설정합니다. 만들기 버튼을 눌러줍니다!! 자 이제 인스턴스 생성이 끝났습니다-!! 1. 우측 상단에 다음과 같은 버튼을 누르면 콘솔창에 들어갈 수 있습니다. curl https://start.spring.io/starter.tgz \ -d bootVersion=2.3.0.RELEASE \ -d dependencies=web \ -d baseDir=gce-standard-example | tar -xzvf - 2. 입력해주면 스프링 프로젝트를 만들어줍니다. 이 상태에서 ls를 입력하면 gce-s..

[삼성SW역량][Python/BOJ] 백준 23288 주사위굴리기2_(구현+BFS)

이 그림처럼 주사위를 기본으로 생각하면 된다. 다만 위치는 해당 값 -1으로 3은 동쪽을 1은 아래 쪽을 가리킨다. 처음에 이 기본 주사위의 1이 천장에 있는 줄 알고 풀었다가 시간을 오래 끌었다. 기본 주사위 굴리기 문제에서 BFS가 추가된 문제이다. 해당 주사위 칸에서 BFS를 돌려 숫자가 같은 것의 개수와 해당 주사위 칸의 값의 총합을 출력하는 문제다. 위 그림에서 0이면 오른쪽으로 돌려서 생각해보면 된다. 위 그림에서 오른쪽으로 돌리는 주사위로 변한 위치를 대입해준다. [리스트는 0-index이기 때문에 1을 빼준다.) 그러면 5와 2는 그대로이므로 4631 (기본) -> 1463 이 된다. 각각 1을 빼주면 3520 -> 0352가 된다. 그게 바로 밑 코드의 dir == 0인 경우다. 코드 :..

[삼성SW역량][Python/BOJ] 백준 21611 마법사 상어와 블리자드_구현

와 정말 복잡한 구현이다. 이 문제를 많이 풀면 구현능력이 생길것같다. 자주 풀어보자. 1. 입력된 그래프를 일렬로 만들어 deque 형태로 저장한다. (indexing 함수) 2. m번 만큼 magic_shark를 호출한다. 2-1. dir방향으로 s만큼 0으로 만들어준다. 2-2. fill_blank 함수로 0을 채워준다. 2-3. 연속된 구슬이 4개 이상 있다면 터뜨린다.(bomb 함수) 터뜨리면서 개수를 저장한다. 2-4. 터지는 구슬이 있는 동안 fill_blank함수를 호출한다. 2-5. grouping 함수로 개수와 숫자로 구슬을 덮어준다. 3. 저장된 터뜨린 구슬의 개수를 계산하여 출력한다. 코드 : from collections import deque def indexing(): # 중앙..

[Python/BOJ] 백준 1039 교환_(신박한)BFS

BFS를 맨날 이차원 리스트에서만 보다가 이렇게 문자열에서 처리하는 문제를 보니 참 신박하다. vis를 set으로 하여 방문여부를 확인하였다. set은 튜플형태로만 add가 된다. (list는 안됨) 덱에 [n,0]와 vis에 [n,0]이 넣어지면서 시작한다. n은 현재 숫자이고 0은 변경횟수를 의미한다. 1. 덱이 있는 동안 반복한다. 1-1 . 덱에서 왼쪽에 있는 값을 꺼낸다. 1-2. 만약 변화 횟수가 K라면 ans를 갱신한다. 1-3. int는 []으로 접근할 수 없으므로 str -> list로 만들어 하나씩 접근할 수 있도록 만든다. 1-4. 이중 for문을 돌면서 변경할 수 있는 모든 경우를 다 본다. 1-5. 첫번째 자리가 i이고 j의 값이 0인 경우 continue한다. 첫번째 자리에 0이..

[Python/BOJ] 백준 14391 종이조각 _비트마스킹

이 문제는 비트마스킹을 사용해 푼다. 이해하면 어렵지는 않은데 처음에 이해하기가 까다로웠다. 비트마스킹 관련 포스팅은 https://what-am-i.tistory.com/348 1 : 가로 (우측) 0 : 세로 (아래) 로 생각해서 푼다. 종이는 각 칸마다 가로로 자르거나 세로로 자르는 방법만 있으므로 모든 자리에는 2가지의 상태가 존재한다. 모든 칸의 개수는 n*m이고 각각 2가지씩 방법이 있으므로 2^(m*n)가지가 존재한다. 이것을 비트마스크로 1

비트마스크? 그게 뭔데

저학년 때, xor, or , and 와 같은 이진수를 조작하는 연산을 배운적이 있다. 이를 알고리즘 문제를 푸는데 이용하여 수행시간을 빠르고 코드를 짧게 하여 푸는 문제들이 있다. 바로 비트마스킹 문제다!! 언젠가 공부해야지 해야지 했는데 이제야 한다. 1. AND ; 둘 다 1인 경우만 1이 된다. ("&") 2. OR ; 둘 중 하나라도 1이면 1이 된다. ("|") 3. XOR ; 두개가 달라야 (1,0 또는 0,1) 1이 된다. ("^") 4. NOT ; 0은 1으로, 1은 0이 된다. ("~") 5. shift ; 비트를 왼쪽 혹은 오른쪽으로 움직여 빈자리는 0으로 채운다. ("") 전부 1인 배열 만들기 : ( 1

[Python/BOJ] 백준 17398 통신망 분할_유니온파인드

코테에 유니온파인드가 나오나...?라는 의구심을 품고 푼 문제 유니온 파인드 문제를 처음 풀어봐서 주석을 많이 달아놨다. 이 문제를 푸는 방법은 끊을 간선을 제외한 모든 간선을 먼저 연결하고 끊을 간선들을 역순으로 하나씩 연결한다. 배열의 부모노드의 값은 음수로 집합의 개수가 저장되어있다는 것이 중요하다. 처음 배열은 -1로 초기화한다. edges,div로 연결할 리스트와 제거할 리스트를 입력받는다. 연결할 리스트의 개수만큼을 돌면서 제거될 연결이 아니라면 연결해준다.(union) answer 변수를 0으로 초기화한다. 제거할 연결을 역순으로 union한다. union은 각 집합의 개수의 곱을 반환하므로 반환값을 answer에 더한다. answer을 출력한다. ; 각 원소를 연결해주고 두 그룹의 크기의 ..

[Python/BOJ] 백준 15927 회문은 회문이 아니야!!_문자열

처음에 정직하게 풀려고 했으나 계속 시간초과가 발생했다. 역시 사람이 머리를 써야 문제가 풀린다. 이 문제는 3가지로 상황을 나누어 풀어야한다. 1. 회문일 경우 -> 전체 길이 -1 1-2. 회문인데 전부 똑같은 문자열 일경우 -> -1 2. 회문이 아닐 경우 -> 전체 길이 코드 : # 팰린드롬인지 확인 def palin(search) : for i in range(len(search)//2) : if search[i] != search[-(i+1)] : return False return True # 전부 같은 문자열인지 확인 def same(search) : for i in range(1,len(search)) : if search[i] != search[0] : return False retur..

[삼성SW역량][Python/BOJ] 백준 17143 낚시왕_구현

딱히 어렵다고 생각되지는 않았다. 상어가 벽에 충돌할 때 구현하는 법만 안다면 쉬운 문제였으나 그 방법을 생각 못했다. 따로 수학공식이 있을 것이라 생각하고 계속 생각해보려고 했는데 못찾았다. 답을 찾아보니 간단하게 방향만 바꿔주고 가야할 길이를 줄이지 않으면 해결되는 것이었다. 이 문제를 통해 배웠으니 다른 문제에서 만나면 사용하자. 추가로 문제가 분명히 맞는데 자꾸 틀리다라고 떠서 한참을 봤다. 그 이유는 처음 입력받은 r,c를 상어 위치하면서 똑같은 변수에 r,c를 받아서 다른 값으로 변경되었었기 때문이다. 입력받는 변수이름을 주의하자. 1,2,3,4가 상 하 우 좌이다. 이를 0부터 시작하도록 변경하여 그리면 이렇다. 0과 2의 경우 반대 방향으로 가려면 1을 더하면 되고 1과 3의 경우 반대 방..