본문 바로가기

알고리즘119

[백준] 2137 c++ https://www.acmicpc.net/problem/2178 2178번: 미로 탐색 첫째 줄에 두 정수 N, M(2 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 M개의 정수로 미로가 주어진다. 각각의 수들은 붙어서 입력으로 주어진다. www.acmicpc.net 풀이 입력이 빈칸없이 주어져서 string으로 받은 다음에 int로 한 칸씩 짤라서 넣어줘야한다. bfs로 풀면 된다. (1,1)에서 (N,M)까지 가는 최단 경로의 칸수를 출력하면 된다. 각 칸에다가 (1,1)에서 각 칸까지의 칸수를 저장하고 다음 칸에 +1해서 칸의 수를 저장했다. #include #include #include using namespace std; int N, M; int num[102][102]; int .. 2023. 4. 1.
[프로그래머스] 행렬 테두리 회전하기 https://school.programmers.co.kr/learn/courses/30/lessons/77485?language=cpp# 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 행렬을 진짜로 회전시켜서 제일 작은 숫자를 구했다. 첫 번째로 틀린건 회전할때 방향을 잘못해서 1->2->3->4행렬을 회전하니까 1->1->1->1이렇게 됐었다. 두 번째로 틀린건 행렬에서 나온 숫자를 bool형 배열에(n) 체크해서 제일 작은 숫자를 반환하게 했는데 n의 최댓값을 작게 잡아줬었다. 100x100+1 의 크기 이상으로 잡아줘야한다. #include .. 2023. 3. 24.
[백준] 11404 플로이드 C++ 플로이드 워셜 알고리즘 : 모든 지점에서 다른 모든 지점까지 최단 경로를 모두 구하는 알고리즘 풀이 a->b로 갈때 1~n 사이의 임의의 정수인 k를 들렸다 가는 경우 중에 최솟값으로 비용을 정한다. 주의 길이 없는 경우를 990만 보다 (99X100000) (99개의 노드를 다 들리고 각 간선 간 비용이 최대값일 경우) 작게 잡으면 안된다. (자연수로 설정할 때) * 그리고 출력할때 한 칸 씩 띄어 출력하라는 말이 없었는데 붙여서 썼더니 틀렸다 1. 길이 없는 경우를 1000000000으로 표현 #include #include using namespace std; int city[101][101]; int n, m; int main() { cin >> n; cin >> m; //입력 a->b로 가는 버.. 2023. 3. 24.
[프로그래머스] 멀쩡한 사각형 c++ https://school.programmers.co.kr/learn/courses/30/lessons/62048 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 기울기를 구하고 한 칸당 몇개의 사각형을 지나는지 구하기 w 개의 칸을 구하기 x, 기울기 분모의 크기만큼 구하기 ex) h: 12 w: 8이면 기울기 3/2 , 사이즈 2까지만 구하고 x 4 => 실패.. 총 사각형을 몇개를 지나는지 구하는 것이 어려웠다. 그냥 w + h -1을 하면 되었다.. 어차피 가로로 w개 세로로 w개 가로 질러 가야하고 출발지가 겹치니까 -1.. 그리고 w*h 앞에 l.. 2023. 3. 2.