본문 바로가기

Algorithm159

#11659 구간 합 구하기 4 # 문제 # 입력 및 출력 # 풀이 처음엔 구간만큼 반복문으로 합을 구했더니 시간 초과가 떴다 그래서 dp를 쓰면 좋겠다고 생각했다 누적 합을 순서대로 저장해두고 구간을 입력받으면 바로 배열에 접근해서 빼주기만 하면 되기 때문에 반복문의 수도 확실히 줄어든다 이렇게 해도 시간초과가 뜨길래; 입력이랑 출력이 많아서 그런가 해서 ios_base::sync_with_stdio(false); cin.tie(0), cout.tie(0); 코드를 넣어주니까 해결됐음 #include using namespace std; int acc[100001]; int main() { ios_base::sync_with_stdio(false); cin.tie(0), cout.tie(0); int n, m, t; cin >> n .. 2022. 8. 8.
#1676 팩토리얼 0의 개수 # 문제 # 입력 및 출력 # 풀이 팩토리얼 계산할때 n이 대략 16 이상부턴 int형 범위를 넘어가게 된다 long long도 500 팩토리얼까진 계산할 수 없기 때문에 string으로 변환해서 계산해줘야한다 string 곱하기, 더하기 연산 코딩하기 귀찮아서 미루다가 오늘 해결했다 #include #include using namespace std; string add(string a, string b) { int size = a.size() < b.size() ? b.size() : a.size(); if (a.size() < b.size()) { for (int i = a.size(); i < size; i++) a = "0" + a; } else { for (int i = b.size(); i .. 2022. 8. 6.
#18352 특정 거리의 도시 찾기 # 문제 # 입력 및 출력 # 풀이 bfs를 사용해서 풀었음 queue에 목적지와 depth를 pair로 저장하고 다음 턴이 되면 depth를 1증가시켜줌 #include #include #include #include using namespace std; vector road[300001]; vector res; // 정답 벡터 queue q; int visit[300001]; int main() { int n, m, k, x; cin >> n >> m >> k >> x; for (int i = 0; i > a >> b; road[a].push_back(b); } q.push(make_pair(x, 0)); visit[x] = 1; while (!q.em.. 2022. 8. 5.
#1449 수리공 항승 # 문제 # 입력 및 출력 # 풀이 #include #include #include using namespace std; vector pipe; int main() { int n, l, p, cnt = 0; cin >> n >> l; for (int i = 0; i > p; pipe.push_back(p); } sort(pipe.begin(), pipe.end()); for (int i = 0; i l; for (int i = 0; i > p;.. 2022. 8. 4.
#1476 날짜 계산 # 문제 # 입력 및 출력 # 풀이 처음엔 최소공배수로 찾아야하나 싶었는데 그냥 하나하나 비교해가면서 찾는게 맞는 것 같아서 무한 반복문으로 해결했음 #include using namespace std; int main() { int e, s, m, te = 1, ts = 1, tm = 1; int year = 1; cin >> e >> s >> m; while (1) { if (te == e && ts == s && tm == m) break; year++; te = ++te > 15 ? te - 15 : te; ts = ++ts > 28 ? ts - 28 : ts; tm = ++tm > 19 ? tm - 19 : tm; } cout 2022. 8. 3.
#6603 로또 # 문제 # 입력 및 출력 # 풀이 스택을 사용하려다가 출력이 불편해서 그냥 배열을 사용했다 로또 숫자를 고를 땐 집합 s에서 현재 보고 있는 숫자보다 큰 인덱스를 가진 숫자만 확인하기 때문에 재귀함수의 매개변수로 인덱스 변수 start를 넘겨줘서 다음에 확인할 숫자의 범위를 설정함 #include using namespace std; int lotto[6]; int s[13]; int k; void print() { // 로또 출력용 함수 for (int i = 0; i s[i]; } for (int i = 0; i 2022. 8. 2.