Spicy Tuna Sushi
본문 바로가기

문제를 풀자26

[백준 #1260] DFS와 BFS(Python) https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net dfs는 재귀, bfs는 큐(deque 모듈 활용)를 이용했다. from collections import deque N, M, V = map(int, input().split()) graph = [[0] * (N+1) for _ in range(N+1)] #그래프 for _ in range(M): i, j = map(int, input().split()) g.. 2023. 3. 7.
[백준 #1463] 1로 만들기(Python) https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 처음에는 이렇게 쉽지 않을 거란 걸 알면서도.. 3으로 나누어떨어지면 & 2로 나누어떨어지면 & 둘 다 안되면..으로 풀어봤던 문제다. 해당 힌트에 나와있는 것처럼 10의 경우에는 10 → 9 → 3 → 1 로 3번 만에 만들 수 있지만, 이 방법은 10 → 5 → 4 → 2 → 1 4번을 거쳐야 한다. 결국 dp로 전에 있는 결괏값을 활용해야 한다. n = int(input()) dp = [0] * (n+1) for i in range(2, n+1): dp[i] = dp[i-1] + 1 if i % 2 == .. 2023. 3. 6.
[백준 #1149] RGB거리(Python) https://www.acmicpc.net/problem/1149 1149번: RGB거리 첫째 줄에 집의 수 N(2 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 각 집을 빨강, 초록, 파랑으로 칠하는 비용이 1번 집부터 한 줄에 하나씩 주어진다. 집을 칠하는 비용은 1,000보다 작거나 www.acmicpc.net dp[i][0] = R dp[i][1] = G dp[i][2] = B 26 40 83 49+min(40,83)=89 60+min(26,83)=86 57+min(26,40)=83 13+min(86,83)=96 89+min(89,83)=172 99+min(89,86)=185 dp에는 계속 최저 비용을 저장한다. 빨강으로 칠할 경우, 그전 집은 파랑이나 초록으로 칠해야 하므로 그중.. 2022. 10. 2.
[프로그래머스] 영어 끝말잇기(C++) https://school.programmers.co.kr/learn/courses/30/lessons/12981 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제에 나온 대로 구현하면 되는 문제다. 중복 단어인지 확인을 위해, 나오는 단어들은 save vector에 저장해둔다. 또한, 끝말잇기가 가능한지 따지기 위해 save vector의 마지막 문자와, 제시할 단어의 첫 문자를 비교한다. #include #include #include using namespace std; vector solution(int n, vector words) { vect.. 2022. 8. 19.
[프로그래머스] 두 큐 합 같게 만들기(C++) https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 큐1와 큐2를 하나의 큐로 합쳐서 사용한다. 테케 1을 예시로 들자면, 원래 각각의 시작점을 a,b로 두어 접근할 수 있도록 하는 것이다. sum 비교에 따라 빠져나오거나, sum과 a,b를 조정해주면 된다. b가 큐 크기를 벗어난다면, 더 이상 접근 불가능한 것이므로 -1으로 지정하고 빠져나온다. #include #include #include using namespace std; int so.. 2022. 8. 19.
[프로그래머스] 예상 대진표(C++) https://school.programmers.co.kr/learn/courses/30/lessons/12985 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 정말 간단하지만, 처음에는 일부 테스트케이스에서 실패했던 문제. 처음에는 두 참가자의 번호 차가 1이면 반복문을 빠져나오도록 했다. 그러나 간단히 (4,2,3) 같은 경우만 보더라도 (1,2) (3,4) 경기후 (2,3)이 만나야 하지만, 처음부터 차가 1이므로 한 번 만에 빠져나온다. 그러므로 둘이 만났을 때도 서로 이겼다 가정하여 번호가 같을 때까지 반복문을 돌린다. using namespac.. 2022. 8. 18.
[프로그래머스] 수식 최대화(C++) https://school.programmers.co.kr/learn/courses/30/lessons/67257 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 우선 주어진 string을 num과 cal(연산자) vector에 각각 나누어 저장한다. num={100,200,300,500,20} cal={-,*,-,+} 방문이 필요한 연산자에 대해서는 visit 배열을 0으로 변경하여, 나중에 방문할 때 1로 변경하는 용도로 사용한다. 그 후 func를 돌리는데, 적용 가능한 연산자, 즉 우선순위로 먼저 적용할 연산자를 선정하여 계산한다. 처음에는 *부터 .. 2022. 8. 18.