Problem Solving84 [Python][백준 21278] 호석이 두 마리 치킨 https://www.acmicpc.net/problem/21278 21278번: 호석이 두 마리 치킨 위의 그림과 같이 1번과 2번 건물에 치킨집을 짓게 되면 1번부터 5번 건물에 대해 치킨집까지의 왕복 시간이 0, 0, 2, 2, 2 로 최소가 된다. 2번과 3번 건물에 지어도 동일한 왕복 시간이 나오지만 더 www.acmicpc.net /* 신경써야 할 부분은 바로 : 1. 플로이드 워셜을 통해 각 건물간의 거리를 구한다. 2. 치킨집은 총 두개이고 각 치킨집에서 다른 건물까지 걸리는 시간을 비교한다 3. 더 작은 값의 2를 곱한뒤 저장한다 (왕복 소요 시간) 4. 각 치킨집의 위치를 완전탐색으로 돌리며 위의 방법으로 구한 값을 비교한다. 5. 더 작은 값의 치킨집 위치를 같이 저장한다. 플로이드 .. 2024. 3. 23. [Python][백준 2660] 회장뽑기 https://www.acmicpc.net/problem/2660 2660번: 회장뽑기 입력의 첫째 줄에는 회원의 수가 있다. 단, 회원의 수는 50명을 넘지 않는다. 둘째 줄 이후로는 한 줄에 두 개의 회원번호가 있는데, 이것은 두 회원이 서로 친구임을 나타낸다. 회원번호는 1부터 www.acmicpc.net /* 신경써야 할 부분은 바로 : 1. 입력된 사람들의 친구 관계를 행렬 형태로 저장 2. 최대 회원 수가 50명이므로 시간적 압박은 크지 않다 따라서 플로이드 워셜을 사용했다. 3. 각 사람의 가장 먼 사람을 기준으로 잡고 회원들 중 가장 적은 거리를 구한다 4. 그 거리와 그 거리를 가진 회원의 수 를 구하고 5. 회원들의 리스트를 뽑은 후 정렬 후 출력한다. 플로이드 워셜만 사용할 줄 알면 .. 2024. 3. 22. [Python][백준 1897] 토달기 https://www.acmicpc.net/problem/1897 1897번: 토달기 첫 줄에 사전에 등재된 단어의 수 d와, 원장님이 처음 말씀하신 단어가 주어진다. (1 ≤ d ≤ 1,000) 원장님이 처음 말씀하신 단어의 길이는 세 글자이며, 사전에 있는 단어를 말씀하셨다. 다음 d개 www.acmicpc.net /* 신경써야 할 부분은 바로 : 1. 토달기 가능한 단어가 없을 시 시작한 단어가 정답 2. bfs 로 탐색하며 확인해야 하는 조건들 : - 토달기 단어보다 한글자 많아야 한다. - 토달기 단어를 포함하는 단어 - 중간에 다른 글자 하나를 포함한 토달기 단어 - 투 포인터로 문자열 탐색 - 방문 처리를 통해 방문한 단어 재방문 방지 어려워 보이지만 방법 자체만 알면 그리 어렵진 않다 */.. 2024. 3. 21. [Python][백준 1595] 북쪽나라의 도로 https://www.acmicpc.net/problem/1595 1595번: 북쪽나라의 도로 입력은 여러줄에 걸쳐 주어진다. 입력의 각 줄은 세 개의 양의 정수로 구성되어있는데, 각각은 차례대로 서로 다른 두 도시의 번호와 두 도시를 연결하는 도로의 길이를 의미한다. 모든 도로는 www.acmicpc.net /* 신경써야 할 부분은 바로 : 1. 데이터 입력 try catch 문 활용해서 입력없음으로 오류 발생 방지 2. 최대 10000개 노드를 DFS 돌릴 시 시간초과 발생 3. 따라서 가장 긴 거리를 찾는거니 가장 긴 거리를 가질 두 노드 중 하나를 구하고 해당 노드로 탐색을 돌리면 총 두번의 탐색만으로 가장 긴 도로를 찾을 수 있다. */ import sys input = sys.stdin.rea.. 2024. 3. 20. [Python][백준 2251] 물통 https://www.acmicpc.net/problem/2251 2251번: 물통 각각 부피가 A, B, C(1≤A, B, C≤200) 리터인 세 개의 물통이 있다. 처음에는 앞의 두 물통은 비어 있고, 세 번째 물통은 가득(C 리터) 차 있다. 이제 어떤 물통에 들어있는 물을 다른 물통으로 쏟아 부 www.acmicpc.net /* 신경써야 할 부분은 바로 : 1. 수통의 최대용량, 수통의 현재 채워진 용량 둘을 구분지어 활용 2. 물을 옮길때 수통이 가득차거나 빌 때까지 옮긴다 3. 도달했던 값은 방문처리로 재방문 방지 4. 결과값들을 정렬 후 출력 문제가 그리 어려워 보이진 않았지만 막상 풀려고 하니 멍해졌다 직접 얼마만큼의 물을 옮겨야 할지 먼저 계산해볼까 했지만 답이 없어보여서 그냥 두 가정 .. 2024. 3. 19. [Python][백준 1068] 트리 https://www.acmicpc.net/problem/1068 1068번: 트리 첫째 줄에 트리의 노드의 개수 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 0번 노드부터 N-1번 노드까지, 각 노드의 부모가 주어진다. 만약 부모가 없다면 (루트) -1이 주어진다 www.acmicpc.net /* 신경써야 할 부분은 바로 : 1. 2% root노드가 0번이 아닐때 발생할수 있다. 2. 78% 루트노드가 리프노드가 될 수 있다. 3. 99% 루트 노드를 삭제하면 0이 나와야한다. 그래서 삭제된 노드와 자식 노드들을 모두 의미없는 값으로 채우고 의미없는 값이 아니며, 자식 노드가 없는 노드의 수를 세면 답이다. */ import sys input = sys.stdin.readline.. 2024. 3. 18. [C++][백준 1406] 에디터 https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net /* 쉬운 문제인줄 알았다. 처음에는 string 으로 해보려고 했는데 삭제와 삽입이 문제가 되서 링크드 리스트가 필요하다고 느꼈다 그래서 리스트 컨테이너를 사용해보려고 했지만 생각보다 복잡했다. 그러던 중 스택으로 한번 구현해볼까 하는 생각에 스택으로 구현해보았다. */ #include #include using namespace std; int main() { stack st1; stack st.. 2022. 1. 25. [C++] [백준 2783] 삼각 김밥 문제 풀기 전 생각 : /* 먼저 입력받은 가격과 그램을 가지고 그램당 가격을 구한뒤 그 후로 입력받은 가격과 그램을 가지고 계산한 그램당 가격과 비교한다. 가장 싼 값을 저장하고 반복을 계속한다. 마지막에 구한 값을 리턴한다. */ #include using namespace std; int main() { float a,b,n,min; scanf("%f %f",&a,&b); min = a/b; scanf("%f",&n); for(int i=0 ; i a/b) min = a/b; } printf("%.2f",min*1000); return 0; } https://www.acmicpc.net/problem/2783 2783번: 삼각 김밥 첫째 줄에 세븐25의 삼각 김밥 가격 정보 X와 Y가 주어진다. (.. 2021. 8. 9. [C++] [LeetCode 543] Diameter of Binary Tree 문제 풀기 전 생각 : /* 재귀함수의 형식으로 문제를 풀기로 결정했다 res에 제일 깊은 깊이값을 저장하고 리턴할 때 해당 노드가 비어있지 않다면 해당 함수가 리턴받은 값에서 가장 큰 값에 1을 더한후 리턴한다 그리고 리턴받은 left 값과 right 값을 더한 값이 res와 비교해 더욱 큰 값을 res에 넣는다. */ class Solution { public: int diameterOfBinaryTreeUtil(TreeNode* root, int &res) { if(root == NULL) return 0; int l = diameterOfBinaryTreeUtil(root->left, res); int r = diameterOfBinaryTreeUtil(root->right, res); res =.. 2021. 8. 9. [C++] [백준 3040] 백설 공주와 일곱 난쟁이 문제 풀기 전 생각 : /* 아홉명의 난장이의 모자에 쓰인 숫자 9개 중 7개를 더했을때 숫자 100이 되는 숫자들이 출력되어야 한다 어느 난쟁이가 가짜인지 판별하려면 모두 더한 값에서 두 숫자를 뺐을때 100이 되면 두 숫자가 모자에 쓰인 난장이가 가짜인것을 알 수 있다 */ #include using namespace std; int main() { int n[9],sum=0; for(int i=0 ; i 2021. 8. 9. [C++] [백준 15552] 빠른 A+B 문제 풀기 전 생각 : /* 이 문제가 말하려는 것은 아마도 입출력에서 걸리는 시간을 줄일 줄 알아야 한다는 것 같다 printf scanf 함수들을 사용하면 큰 문제 없이 풀 수 있는 문제이다 */ #include int main() { int n,a,b; scanf("%d",&n); for(int i=0 ; i> T; for (int i = 0; i > A >> B; sstream 2021. 8. 9. [C++] [백준 1920] 수 찾기 문제 풀기 전 생각 : /* 먼저 비교에 쓰일 숫자들을 입력 받고 숫자를 입력받을 때 위에서 저장한 숫자들에 존재하는지 find 함수를 통해 판별한다. 만약 존재한다면 1을 출력 존재하지 않는다면 0을 출력한다 */ #include using namespace std; int main(){ int n,m,tmp; int *p; scanf("%d",&n); int a[n]; for(int i=0 ; i n; for(int i=0;i> a[i]; } sort(a,a+n); cin >> m; for(int i=0;i> t; if(binary_search(a,a+n,t)) cout 2021. 8. 9. 이전 1 2 3 4 5 ··· 7 다음