Algorithm/Implementation (751) 썸네일형 리스트형 (C++) - 백준(BOJ) 3986번 : 좋은 단어 www.acmicpc.net/problem/3986 3986번: 좋은 단어 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 www.acmicpc.net stack을 사용하는 간단한 문제였습니다 풀이방법 * stack s가 비어있을 경우 s.top() 함수를 호출한다면 오류가 발생하므로 조심해야 합니다. 모든 단어를 검사하면서 stack이 비어있지 않다면 s.top != 단어인 경우엔 push, s.top != 한 단어인 경우엔 pop해주면 됩니다. 마지막에 stack이 비어있다면 좋은 단어입니다. Code #include using namespace std; int ma.. (Python) - 백준(BOJ) 2338번 : 긴자리 계산 답 www.acmicpc.net/problem/2338 2338번: 긴자리 계산 첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A×B를 출력한다. 각각을 출력할 때, 답이 0인 경우를 제외하고는 0으로 시작하게 해서는 안 된다(1을 01로 출력하면 안 된다는 의미). www.acmicpc.net python이나 js는 긴자리 수 사칙연산을 제공합니다. 이런 문제는 해당 언어로 푸는 것이 적합합니다. Code a = int(input()) b = int(input()) print(a+b) print(a-b) print(a*b) (C++) - 백준(BOJ) 1935번 : 후위 표기식 2 답 www.acmicpc.net/problem/1935 1935번: 후위 표기식2 첫째 줄에 피연산자의 개수(1 ≤ N ≤ 26) 가 주어진다. 그리고 둘째 줄에는 후위 표기식이 주어진다. (여기서 피연산자는 A~Z의 영대문자이며, A부터 순서대로 N개의 영대문자만이 사용되며, 길이 www.acmicpc.net stack을 이용해 후위 표기식을 구현했습니다. 풀이방법 1. 알파벳이라면 stack push해줍니다. 2. 알파벳이 아니라면 2개의 피연산자를 pop한 뒤 결과값을 stack push해줍니다. Code #include using namespace std; string operation; stack calculator; map m; int main(){ int n; cin >> n >> operati.. (C++) - 백준(BOJ) 1972번 : 놀라운 문자열 답 www.acmicpc.net/problem/1972 1972번: 놀라운 문자열 대문자 알파벳으로만 이루어져 있는 문자열이 있다. 이 문자열에 대해서 ‘D-쌍’이라는 것을 정의할 수 있는데, 이 문자열에 포함되어 있는, 거리가 D인 두 문자를 순서대로 나열한 것을 이 문 www.acmicpc.net 풀이방법 1. backtracking 알고리즘을 이용해 조합으로 두 개의 문자를 뽑고 그 때의 거리를 계산해 vector에 저장합니다. 2. vector의 index가 곧 거리가 되며 해당 거리에 모인 문자열들이 저장되었으니 매 index마다 문자들을 검사하여 map에 없는 문자열이라면 insert해주고 있는 문자열이라면 놀랍지 않으므로 false를 반환해줍니다. 3. 놀라움의 여부에 따라 적절한 문구를 출력해.. (C++) - 백준(BOJ) 1822번 : 차집합 답 www.acmicpc.net/problem/1822 1822번: 차집합 첫째 줄에는 집합 A의 원소의 개수 n(A)와 집합 B의 원소의 개수 n(B)가 빈 칸을 사이에 두고 주어진다. (1 ≤ n(A), n(B) ≤ 500,000)이 주어진다. 둘째 줄에는 집합 A의 원소가, 셋째 줄에는 집합 B의 원소 www.acmicpc.net map, vector 자료구조를 이용해 간단히 풀 수 있었던 문제였습니다. 풀이방법 1. b의 원소를 key, 해당 원소의 빈도 수를 value로 한 map 자료구조를 만들어 저장합니다. 2. a의 원소들중 map(b의 원소-key, 그 원소가 나온 빈도수-value)에 없는 원소들을 vector 자료구조에 저장합니다. 3. 저장된 vector를 정렬 후 적절히 출력합니다. .. (C++) - 백준(BOJ) 1302번 : 베스트셀러 답 www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고 www.acmicpc.net 간단한 map을 이용한 구현이었습니다. 풀이방법 1. 책 이름을 key, 책 이름이 나온 빈도 수를 value로 한 map 변수를 만들어 정보를 저장합니다. 2. map 자료구조는 자료를 저장할 떄 key값을 기준으로 오름차순으로 정렬되므로 가장 빈도 수가 높은 값을 찾으면 바로 key값을 출력 후 프로그램을 종료하면 됩니다. Code #include using namespace std; map m; i.. (C++) - 백준(BOJ) 1269번 : 대칭 차집합 답 www.acmicpc.net/problem/1269 1269번: 대칭 차집합 첫째 줄에 집합 A의 원소의 개수와 집합 B의 원소의 개수가 빈 칸을 사이에 두고 주어진다. 둘째 줄에는 집합 A의 모든 원소가, 셋째 줄에는 집합 B의 모든 원소가 빈 칸을 사이에 두고 각각 주어 www.acmicpc.net 풀이방법 1. a에 대한 원소를 key, 나온 빈도를 value로 한 map 자료구조를 만듭니다. 2. b의 원소를 map에서 key로 하여 검색했을 때 값이 있다면 a와 공집합에 대한 원소이므로 세줍니다. 3. 답출력 : a원소 개수 + b원소 개수 - (공집합 원소의 개수 * 2)를 출력해줍니다. Code #include using namespace std; map m; int aSize,bSize, .. (C++) - 백준(BOJ) 1021번 : 회전하는 큐 답 www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 www.acmicpc.net deque을 구현하는 문제였습니다. 풀이방법 1. 뽑을 값을 찾을때까지 왼쪽으로 옮겨봅니다. 2. 왼쪽으로 옮기는 연산의 개수를 저장합니다. 3. 해당 개수만큼 원상복귀(우측이동)시켜줍니다. 4. 다시 뽑을 값을 찾을때까지 오른쪽으로 옮겨봅니다. 5. 오른쪽으로 옮기는 연산의 개수를 저장합니다. 6. 해당 개수만큼 원상복귀(좌측이동)시켜줍니다. 7. 더 적은 연산 개수에 해당하는 방향으로 옮겨주고 값을 po.. 이전 1 ··· 81 82 83 84 85 86 87 ··· 94 다음