분류 전체보기 88

[C++] 백준 1107 : 리모컨

https://www.acmicpc.net/problem/1107 1107번: 리모컨 첫째 줄에 수빈이가 이동하려고 하는 채널 N (0 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 고장난 버튼의 개수 M (0 ≤ M ≤ 10)이 주어진다. 고장난 버튼이 있는 경우에는 셋째 줄에는 고장난 버튼 www.acmicpc.net 백준 1107번 리모컨문제를 풀어봤습니다. 직관적으로 풀려다가 6중 for문을 사용하게 됐습니다. 버튼 0이 고장났을 때 자릿수에 맞춰서 if문을 적용시켜줘야 합니다. 반복문에서 222는 000222므로 앞에 있는 세자리의 0은 무시하고 계산했습니다. 아래는 전체 코드입니다. #include #include #include #include #include using namespac..

알고리즘/PS 2022.03.27

[C++] 백준 7562 : 나이트의 이동

https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 수 www.acmicpc.net 백준 7562번 나이트의 이동을 풀어봤습니다. 간단한 BFS문제 입니다. 테스트 케이스마다 큐와 배열을 초기화해줘야 합니다. 아래는 전체 코드입니다. #include #include #include #include #include using namespace std; int t, l; int dx[8] = { 1,2,2,1,-1,-2,-2,-1 }; int dy[8] = { 2,1,-1,-2,-2,..

알고리즘/PS 2022.03.26

[C++] 백준 1707 : 이분 그래프

https://www.acmicpc.net/problem/1707 1707번: 이분 그래프 입력은 여러 개의 테스트 케이스로 구성되어 있는데, 첫째 줄에 테스트 케이스의 개수 K가 주어진다. 각 테스트 케이스의 첫째 줄에는 그래프의 정점의 개수 V와 간선의 개수 E가 빈 칸을 사이에 www.acmicpc.net 백준 1707번 이분 그래프를 풀어봤습니다. graph의 첫 좌표는 본인입니다. 예를 들어 graph[2][0]은 (2,0)으로, graph[3][0]은 (3,0)으로 초기화 됩니다. 그 다음엔 인풋이 양방향 간선이라 하나는 정방향, 하나는 역방향으로 총 두번 넣었습니다. 테스트 케이스별로 꼭 큐와 배열들을 초기화 해줘야 합니다. 맞았는데 왜 틀렸는지 찾는 경우가 사라집니다. BFS함수의 for문..

알고리즘/PS 2022.03.26

Visual Studio와 Arduino사용해서 간단한 주차 시스템 구현하기

사용 환경 Visual Studio 2022 OpenCV 4.5.4 Tesseract-OCR 5.0.1 Arduino mega 2560 (CH340 driver) OpenCV 이전 게시글인 번호판 인식을 활용했습니다. 2022.03.11 - [OpenCV] - Visual Studio에서 OpenCV, Tesseract-OCR 사용해서 번호판 인식하고 출력하기 자세한 코드는 https://github.com/kangsunghyun111/Simple-parking-management-system-with-arduino 에 있습니다. 전체 시스템은 비주얼 스튜디오에서 돌아가는 시스템, 아두이노에서 돌아가는 시스템으로 나눌 수 있습니다. 두 시스템은 시리얼 통신으로 연결되어 있습니다. 시리얼 통신을 하는 경우..

OpenCV 2022.03.25

[C++] 백준 2206 : 벽 부수고 이동하기

https://www.acmicpc.net/problem/2206 2206번: 벽 부수고 이동하기 N×M의 행렬로 표현되는 맵이 있다. 맵에서 0은 이동할 수 있는 곳을 나타내고, 1은 이동할 수 없는 벽이 있는 곳을 나타낸다. 당신은 (1, 1)에서 (N, M)의 위치까지 이동하려 하는데, 이때 최단 경로 www.acmicpc.net 백준 2206번 벽 부수고 이동하기를 풀어봤습니다. 기존 BFS문제에 벽을 부술 수 있는 상태가 추가됐습니다. 처음엔 벽을 부수고 이동하는 것과 안부수고 이동하는 것에 차이를 안두고 풀었더니 문제가 생겼습니다. 그래서 이동 거리를 저장하는 check배열과 방문한 적 있는지 확인하는 visited배열에도 상태를 추가해서 3차원 배열로 만들었습니다. 벽을 부술 수 있으면 1,..

알고리즘/PS 2022.03.25

[C++] 백준 9184 : 신나는 함수 호출

https://www.acmicpc.net/problem/9184 9184번: 신나는 함수 실행 입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다. www.acmicpc.net 백준 9184번 신나는 함수 실행을 풀어봤습니다. 간단한 DP문제입니다. 한번 연산했던 인풋이 들어오면 dp배열을 참조해서 연산없이 return 값을 구합니다. 아래는 전체 코드입니다. #include using namespace std; #define PAD 50 int dp[101][101][101]; int w(int a, int b, int c) { if (dp[PAD+a][PAD + b][P..

알고리즘/PS 2022.03.24

[C++] 백준 1697 : 숨바꼭질

https://www.acmicpc.net/problem/1697 1697번: 숨바꼭질 수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 www.acmicpc.net 백준 1697번을 풀어봤습니다. 문제 형식이 토마토랑 다르지만 똑같이 BFS로 풀 수 있습니다. 상하좌우 대신 한 칸 앞으로 이동, 한 칸 뒤로 이동, 두 배 앞으로 이동 3개의 좌표를 이용하면 됩니다. 아래는 전체 코드입니다. #include #include #include #include using namespace std; int n, k; int map[10000..

알고리즘/PS 2022.03.22

[C++] 백준 7569 : 토마토

https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 백준 7569번 토마토를 풀어봤습니다. 기존 2차원 BFS문제에서 3차원으로 바꼈습니다. 변수가 3차원인것만 제외하면 2차원과 푸는 방법이 똑같습니다. 아래는 전체 코드입니다. #include #include #include #include using namespace std; int m, n, h; int map[100][100][100]; int check[100][10..

알고리즘/PS 2022.03.22

[C++] 백준 1003 : 피보나치 함수

https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net 백준 1003번을 풀어봤습니다. 간단한 다이나믹 프로그래밍 문제입니다. 재귀 함수를 그대로 사용하면 시간이 너무 오래걸려서 결과값을 저장하는 배열을 만들어주면 됩니다. 재귀 함수 첫 부분에 이미 계산한 값인지만 체크해주는 if문만 만들면 됩니다. 아래는 전체 코드입니다. #include using namespace std; int callCount[40][2]; pair fibonacci(int n) { if (callCount[n][0] != 0 || callCount[n][1] != 0) ..

알고리즘/PS 2022.03.21

[C++] 백준 7576 : 토마토

https://www.acmicpc.net/problem/7576 7576번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토 www.acmicpc.net 백준 7576번 토마토 문제를 풀어봤습니다. BFS로 풀었습니다. 아래는 전체 코드입니다. #include #include #include #include #include using namespace std; int m, n; bool visited[1000][1000]; int map[1000][1000]; int check[1000][1000]; int dx[4] = { -1,..

알고리즘/PS 2022.03.18