일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- BOJ
- Computer Science
- cs
- 재테크/투자
- Programmers
- algogritim
- data structure
- 자료구조
- 프로그래머스
- 문제풀이
- LeetCode
- algorithm
- db
- 알고리즘
- network
- D3
- language
- 독서
- 데이터베이스
- swea
- OS
- D2
- 감상문
- 법의학
- Database
- 운영체제
- 네트워크
- SW Expert Academy
- c++
- 백준
- Today
- Total
목록algorithm (134)
선택은 나의 것
문제 BOJ 4378 : https://www.acmicpc.net/problem/4378 4378번: 트ㅏㅊ; 문제 가끔, 그러나 때때로, 우리들은 키보드에서 양손을 오른쪽으로 한 칸씩 이동한 상태로 두고 타자를 치는 경우가 있다. 즉, "ACMICPC.NET"을 위와 같은 방법으로 치게 되면 "SV,OV[V/MRY"이라는 이�� www.acmicpc.net 접근 먼저 키보드의 행 별로 배열을 만들어 키보드의 모양을 저장해 주자. 다음으로 getline을 이용해 EOF를 만날 때까지 입력을 받는다. EOF처리 방법에 대해선 [C++] EOF(End-Of-File) 처리 방법 글을 참고하길 바란다. 입력받은 문자열을 이루고 있는 각 문자들에 대해 키보드에서의 위치를 찾은 다음 그 위치에서 한 칸 왼쪽에 ..
알고리즘 문제를 풀다 보면 가끔 입력의 개수나 입력의 마지막 조건이 주어지지 않는 경우가 있다. 이럴 때는 어떻게 입력을 받아야 할까? EOF란? 먼저 EOF에 대해 알아보자. EOF(End-Of-File)는 문자 그대로 파일의 끝을 의미하며 데이터 소스로부터 더 이상 읽을 수 있는 데이터가 없음을 나타낸다. 실제로 이 값은 -1을 갖는다. BOJ과 같이 알고리즘 문제를 제공해 주는 사이트들은 입력을 파일로 주기 때문에 이를 이용하여 입력의 끝을 알 수 있다. C++에서 EOF를 처리하는 방법 1. cin.eof() #include using namespace std; while (1) { cin >> num; if (cin.eof() == true) break; ... } cin으로 입력을 받는 중 파..

문제 BOJ 2169 : https://www.acmicpc.net/problem/2169 2169번: 로봇 조종하기 첫째 줄에 N, M(1≤N, M≤1,000)이 주어진다. 다음 N개의 줄에는 M개의 수로 배열이 주어진다. 배열의 각 수는 절댓값이 100을 넘지 않는 정수이다. 이 값은 그 지역의 가치를 나타낸다. www.acmicpc.net 접근 탐사 로봇은 (1, 1)의 위치부터 (n, m)까지 탐사하는 방법 중 탐사한 지역들의 가치의 합이 최대인 값을 찾는 문제이다. 나는 dp로 접근했다. 먼저 임의의 좌표에 도달하기 위해서는 그 좌표의 위 또는 왼쪽 또는 오른쪽에서 접근할 수 있다. 따라서 왼쪽에서 오는 최댓값과 위에서 오는 최댓값을 비교해 최댓값을 저장해주는 배열 left_max와 오른쪽에서 ..
문제 SWEA 2819 : 격자판의 숫자 이어 붙이기 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 접근 격자판의 임의의 위치에서 시작해 6번 이동하여 만들 수 있는 서로 다른 일곱 자리 수들의 개수를 구하는 문제이다. 이때 한 번 거쳤던 격자칸을 다시 거쳐도 되기 때문에 방문처리는 해주지 않았다. dfs를 통해 격자판을 7번 움직일 수 있는 모든 경우의 수를 찾았다. 이때 만들어진 일곱 자리 수들의 중복을 방지하기 위해 set을 사용했다. 코드 // algorithm study // SWEA_[D4]2819_격자판의 숫자 이어 붙이기 #include #include using namespace std; ch..

문제 SWEA 1949 : [모의 SW 역량테스트] 등산로 조정 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 접근 등산로는 가장 높은 봉우리에서 시작하여 현 위치보다 낮은 지형으로만 갈 수 있으며 딱 한 곳만 K만큼 지형을 깎는 공사를 할 수 있다. 따라서 가장 높은 봉우리들을 시작으로 dfs를 돌며 가장 긴 등산로를 찾아 준다. 가장 높은 봉우리는 처음 지형의 높이를 입력받을 때 저장해 준다. 이때 저장한 가장 높은 봉우리들을 시작으로 dfs를 돌 것이다. 테스트 케이스가 다수이므로 처음 지형의 높이를 받아줄 때 dfs방문을 처리하는 visit 배열도 같이 초기화해 줬다. dfs를 돌면서 만약 다음 지형이..
문제 SWEA 1948 : 날짜 계산기 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 접근 월 일로 이루어진 날짜 2개를 입력 받아, 두 번째 날짜가 첫 번째 날짜의 며칠째인지 출력하는 문제이다. 코드 // algorithm study // SWEA_[D2]1948_날짜 계산기 #include using namespace std; int main() { int t; cin >> t; int month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; for (int i = 0; i < t; i++) { int am, ad, bm, bd, answer = 0; ..
문제 SWEA 1946 : 간단한 압축 풀기 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 접근 문자의 반복 횟수만큼 문자를 출력해주면 된다. 이때 문서의 너비는 10으로 고정임으로 10번마다 "\n"을 해주면 된다. 코드 // algorithm study // SWEA_[D2]1946_간단한 압축 풀기 #include using namespace std; int main() { int test_case, n; cin >> test_case; for (int t = 0; t > n; int counter = 0; cout > num; for (int k = 0; k..
문제 SWEA 7853 : 오타 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 접근 재경이는 i번째 문자에 i - 1번째 문자 또는 i번째 문자 또는 i + 1번째 문자를 칠 수 있다. 따라서 [i - 1], [i], [i + 1]이 모두 다른 단어로 이뤄져 있으면 i번째에 위치할 문자의 경우의 수는 3이 된다. [i - 1], [i], [i + 1] 중 두 문자가 같다면 경우의 수는 2가 되며 셋 다 같을 경우는 1이 된다. 따라서 i번째에 위치할 문자의 경우의 수를 계속 곱해나가면 된다. 여기서 0번째 문자는 i - 1번째 문자가 없기 때문에 i번째와 i + 1번째 문자만을 보면 되고, 마지막 문자는 i ..
문제 SWEA 8104 : 조 만들기 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 접근 1부터 n * k만큼 돌면서 조건에 맞게 등수를 더해주면 되는 문제이다. 코드 // algorithm study // SWEA_[D3]8104_조 만들기 #include using namespace std; int main() { int test_case; cin >> test_case; for (int t = 0; t > n >> k; for (int i = 1; i
문제 SWEA number : 시간 개념 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 접근 문자열을 다루는 문제만 보면 습관적으로 python으로 푸는데 이 문제는 SWEA에서 python을 지원해주지 않기 때문에(...) c++로 다시 풀었다. python 코드도 올려놨으니 참고하시길. (파이썬 최고) 문제는 현재 시각을 기준으로 약속 시각까지 시간이 얼마나 남았는지를 구해주는 문제이다. 시간에 관한 문제는 대체로 가장 작은 시간의 단위-이 문제에서는 초(second)-로 바꿔서 푸는 게 편리하고 좋다. 시(hour) * 3600 + 분(minute) * 60 +초(second)로 환산하여 약속 시각 - ..