본문 바로가기

알고리즘119

[7569] 토마토 c++ https://www.acmicpc.net/problem/7569 7569번: 토마토 첫 줄에는 상자의 크기를 나타내는 두 정수 M,N과 쌓아올려지는 상자의 수를 나타내는 H가 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, www.acmicpc.net 풀이 bfs로 풀었다. 3차원 배열에 토마토를 저장해두고 큐가 비기 전까지 bfs를 수행한다. x,y,z 좌표는 pair에 저장해주었다. 3차원 좌표하고 자료구조하고 매칭시키는것이 조금 헷갈렸다. #include #include using namespace std; int box[100][100][100]; int M, N, H;//가로 , 세로, 높이 int ans; in.. 2023. 5. 12.
[백준] 1987 알파벳 c++ 지나왔던 길에 있었던 알파벳이 없는 길로 가야한다. 최대로 지날 수 있는 칸 수를 구하면 된다. 풀이 dfs + 백트래킹 지나온 알파벳인지 체크 -> visit #include using namespace std; int graph[27][27]; bool visit[26]; int R, C; int ans; void dfs(int y,int x, int cnt) { int dx[] = { 0,1,0,-1 }; int dy[] = { 1,0,-1,0 }; visit[graph[y][x]] = true; for (int i = 0; i = 0 && nx >= 0)/.. 2023. 4. 16.
[프로그래머스] 수식 최대화 c++ 어려웠던 부분 -문자를 숫자로 바꾸는 부분 - 연산자와 숫자의 인덱스를 어떻게 할지 #include #include #include #include #include using namespace std; long long solution(string expression) { long long answer = 0; vector num; vector exp, location; string n = ""; for(int i = 0; i < expression.size(); i++) { //연산자일때 if(expression[i] == '+' || expression[i] == '-' || expression[i] == '*') { num.push_back(stoi(n)); n = ""; //연산자 종류저장 if(.. 2023. 4. 16.
[프로그래머스] 배달 c++ https://school.programmers.co.kr/learn/courses/30/lessons/12978 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 플로이드 워셜 알고리즘 : 모든 지점에서 다른 모든 지점까지 최단 경로를 모두 구하는 알고리즘 풀이 플로이드 워셜 알고리즘으로 풀었다. (플로이드 워셜 알고리즘 : 모든 지점에서 다른 모든 지점까지 최단 경로를 모두 구하는 알고리즘) a->b로 갈때 1~n 사이의 임의의 정수인 k를 들렸다 가는 경우 중에 최솟값으로 비용을 정한다. 각 도시에서 다른 도시까지의 최단거리를 다 계산해서 1번 도시에서.. 2023. 4. 1.