https://www.acmicpc.net/problem/2206 이 문제는 BFS를 사용하면 된다.시작 위치는 1, 1부터로 나와있지만 배열 사용의 편의 상 0,0을 시작위치로 결정하였다. 이 문제의 BFS의 방문 표시는 3차원 배열로 표시해야한다.벽을 부수고 이동하는 경우와 부수지 않고 이동하는 경우가 존재하는데벽을 1번 부시면 다음번에 벽을 만났을 때 부술 수 없기 때문이다.// [row][column][1] == 벽을 부수지 않은 상태에서의 해당 칸에 도착하는 데에 이동한 칸의 개수 // [row][column][0] == 벽을 부순 상태에서의 해당 칸에 도착하는 데에 이동한 칸의 개수 따라서 다음 칸이 벽이고 부술 수 있을 때면 -벽을 부수었기 때문에 큐에 다음 칸의 좌표와 0을 넣어주고, -..
분류 전체보기
https://www.acmicpc.net/problem/13549 이 문제는 BFS를 통해 해결할 수 있다.BFS를 통해 N에서 K까지 가는 경로 중 최소 값을 구해 출력하는 것이 전부인 문제다.이때 방문 표시는 이동 후 다음 경로를 탐색하기 전 표시해야한다는 것이다.이유는 탐색할 수 있는 경로는 총 3가지인데 이동 전 표시하게 되면, 3가지의 경로를 모두 이동해볼 수 없기 때문이다. #include #include using namespace std;int N, K;int answer = 987654321;bool visited[100001];void bfs(){ queue>q; q.push({N,0}); while(!q.empty()){ int now = q.front(..
https://www.acmicpc.net/problem/14500 테트로미노에 존재하는 블록들은 모두 4칸인 것을 알 수 있다.ㅗ모양을 제외하면, 모든 블록은 depth가 4인 DFS로 구할 수 있다.따라서 ㅗ모양은 shapeN()함수로 구하고 나머지 블록은 DFS로 구할 수 있다는 것을 알 수 있다. dfs의 구현은, 매번 한 칸에 대해 dfs를 시작할 때마다 visited배열을 초기화하는 것이 아닌, dfs의 특징을 살려 다음 뎁스로 넘어가기 전 visited[nextR][nextC]를 체크하고, 다시 돌아올 때 visited[nextR][nextC]를 해제하는 방법을 사용할 수 있다. 뎁스가 깊어질 때마다 방문한 칸은 체크해야 하지만, 하나의 테트로미노(한 번의 뎁스4까지 탐색)이 끝나면 다시 방..
https://www.acmicpc.net/problem/30804 탕후루를 끼울 때 순차적을 끼울 수 있다고 생각하고, 다른 종류의 과일이 2보다 클 경우 앞에서 부터 과일을 제거하면 해결할 수 있다.따라서 1 과일 값을 입력 받은 후 cnt배열에 값이 0인지 검사(처음 끼우는 과일인지 검사) 한 후 cnt배열의 값을 1증가시킨다.이 후 처음 끼우는 과일인 경우 other 변수를 1 증가(과일 종류를 세는 변수)시킨다. other 변수의 값이 2보다 큰 경우 queue에서 과일 하나를 빼고 cnt 배열에서 값을 1 감소시킨다. (과일을 제거했기 때문)만약 제거한 과일이 탕후루 꼬치에 존재하지 않는 과일(cnt배열의 값이 0)인 경우 other 변수를 1 감소시킨다. 큐의 과일 개수를 구하고 정답 변수..
https://www.acmicpc.net/problem/6064 카잉달력은 에서 까지 존재하며, 해에는 멸망의 해가 된다.또한 의 다음해는 x 따라서 M = 10, N = 12인 경우 , , , , , , , , , , , ...이 된다. 카잉 달력의 51번째 해를 구할려면 어떻게 해야할까?51번째 해는 M인 10이 5번 들어가고 그 후 1해가 지나가면 51번째 해가된다. ( x = 1 )마찬가지로 N인 12가 4번 들어가고 그 후 3해가 지나가면 51번째 해가된다. ( y = 3 ) 멸망해는 M과 N이 동시에 들어가는 최소공배수가 된다.위 조건대로 멸망해의 최소공배수를 구하면 60이 된다. 먼저 예제의 경우를 보자10 1239i = 3i = 13i = 23i = 33 .....이런식으로 for문을 ..
컴포넌트 분리const Item = ({item, drag, itemImgObj}) =>{ return( )}export default Item;import Item from './Item';const ItemCollection = ({items,drag, imgArr})=>{ return ( { items.map((item)=>(item.ranking === 0) ?o.id === item.imageId)}/> :null) } )}export default ItemCollection; 이벤트 리스너 생성import Re..
Grid 만들기src/Components에 RankingGrid.js 생성const RankingGrid = ({items, imgArr})=>{ const rankingGrid = []; const cellCollectionTop = []; const cellCollectionMiddle = []; const cellCollectionBottom = []; const cellCollectionWorst = []; const pushCellMarkupToArr = (cellCollection, rankNum, rowLabel)=>{ if(rankNum > 0){ var item = items.find(o=>o.ranking === rankN..
페이지 생성ClientApp/src 디렉터리 아래에 RankItem.js 파일 생성import React, {useState, useEffect} from "react";import MovieImageArr from "./MovieImages";const RankItems = ()=>{ const [items, setItems] = useState([]); const dataType = 1; useEffect(()=>{ fetch(`item/${dataType}`) .then((results)=>{ return results.json(); }) .then(data=>{ setItems(data); ..