🧡 Programming(11)
-
[ 백준/C++] 17472 다리만들기2 (삼성A형 기출문제,BFS,DFS 이용하기)
파란것은 섬이고 하얀것은 바다 그리고 회색의 다리로 섬들을 최소 길이로 이으라는 문제이다. 문제 자체는 이해하기 어렵지 않다. 다리는 직선이어야 하고 길이는 2이상이어야 한다. 그리고 다리는 섬과 섬 사이를 이어야한다. 즉, 다리를 잇는 도중에 다리를 짓는 방향과 다른방향으로 섬이 있다고 해서 섬이 이어졌다고 판단하면 안된다. 그런데 이 문제를 푸는 방법은 좀 생각을 잘 해야 한다. 코드를 보면 좀 복잡 해 보이겠지만 함수의 이름을 최대한 직관적으로 쉽게 지정해 놓았으니 찬찬히 보면서 이해해 보면 좋을 것 같다. 일단 풀이의 알고리즘 순서는 다음과 같다. 1.dfs()를 이용하여 일단 섬의 개수를 구한다. dfs를 이용하여 동서남북 4방향 다 체크하면서 더 이상 갈 곳이 없으면 빠져나와서 섬 개수를 카운..
2023.02.12 -
[백준/C++] 7576번 토마토 (BFS기초문제, 방문체크 순서, vector 사용하면 안되는 이유)
내가 정말 애정하는 문제 토마토이다. (링크) BFS의 기초를 이해하기에 좋은 문제라고 생각한다. 그리고 여러 코딩테스트(삼전,한화,CosPro 등)을 치루면서 토마토와 유사한 문제들을 자주 봐왔다. 코딩테스트 준비를 시작하는 사람들이라면 토마토 문제는 꼭 한 번 풀어보면 좋겠다. 익은 토마토, 안익은 토마토 개수만 신경쓰면 되고 그 외에는 딱히 어려운 경우는 없다. bfs를 풀 때 가장 중요한 점이 있다. 바로 방문위치이다. queue에서 pop 할 때 방문체크를 하는 것과 queue에 넣어줄 때 방문체크를 하는 것에는 큰 차이가 있다. 꼭 queue에 넣어줄 때 방문체크를 하자 방문체크를 pop 할 때 하는 것은 중복된 값들을 처리하는 경우가 생겨 시간 초과와 같은 에러가 생길 수 있다. 또는 루프에..
2023.02.11 -
[백준/C++] 17143번 낚시왕 (반례 케이스)
문제 자체는 어렵지 않은데 코딩을 할 때 좀 잘 생각해야 하는 문제이다. 시뮬레이션 문제이고 낚시왕이 1번 열의 한 칸 왼쪽에서 오른쪽까지 이동하면 멈추므로 낚시왕의 위치를 기준으로 시뮬레이션을 실행하면 된다. 특히 상어의 위치에 대해서 잘 생각 해야 하는 문제이다. 죽은 상어를 먹고 있지 않은 지 생각해야 한다. 또한, 새로 이동한 상어가 전에 있던 상어의 위치로 옮겨 갈 때(?) 위치 정보가 올바르게 저장되는 지도 잘 따져보자. 나는 개인적으로 어떤 정보를 담고있는 물체(상어)라면 struct를 사용하는 것을 애용한다. 한 번에 모든 정보를 담기 쉽고 접근성이 좋기 때문이다. #define _CRT_SECURE_NO_WARNINGS #define ABS(A,B) A>B? A-B: B-A #includ..
2023.02.11 -
[Matplotlib] 이미지 여러 장 plot 할 때 그리드,칸 나누기 & 그리드,칸 합치기(subplot,GridSpec,add_subplot)
매번 Matplotlib으로 이미지를 플롯하다보면 이미지 여러장 들을 동시에 플롯하고 싶은 경우가 있다. 나도 매번 항상 헷갈려서 찾아보는데 이번 기회에 좀 정리하려고 포스팅을 한다. matplotlib.pyplot 모듈의 subplot() 함수는 여러개의 그래프, 이미지를 하나의 그림에 나타내도록 한다. 나는 다음과 같이 import 한 후 사용하였다. import os import skimage import IPython.display from PIL import Image import numpy as np import cv2 import matplotlib import matplotlib.pyplot as plt from matplotlib.gridspec import GridSpec 그리드,칸 나..
2023.02.10 -
[unzip 에러] unzip invalid zip file with overlapped components (possible zip bomb)
unzip invalid zip file with overlapped components (possible zip bomb) 이런 에러가 발생하였다. zip -FF 에러가발생한파일.zip --out new.zip unzip new.zip 이렇게 하니까 압축이 풀렸다
2022.05.16