๊ณต๋ถ€/์ฝ”๋”ฉ

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์Šคํ„ฐ๋”” 2์ฃผ์ฐจ ๊ฒฐ์‚ฐ

sourceoftax 2025. 10. 5. 22:05

0927

#include <iostream>
#include <vector>
using namespace std;

int main() {
    long long min, max;
    cin >> min >> max;

    long long length = max - min + 1;
    vector<bool> isSquareFree(length, true);  

    for (long long i = 2; i * i <= max; i++) {
        long long square = i * i;

        long long start = (min + square - 1) / square * square;

        for (long long j = start; j <= max; j += square) {
            isSquareFree[j - min] = false; 
        }
    }

    int count = 0;
    for (int i = 0; i < length; i++) {
        if (isSquareFree[i]) count++;
    }

    cout << count << '\n';
    return 0;
}

 

0928

 

num = int(input())
d = [0] * (num + 1)

for x in range(2, num + 1):
    d[x] = d[x - 1] + 1         
    if x % 2 == 0:              
        d[x] = min(d[x], d[x // 2] + 1)
    if x % 3 == 0:              
        d[x] = min(d[x], d[x // 3] + 1)

print(d[num])

ํ’€์ด๊ณผ์ •: dp ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ค‘ ์ƒํ–ฅ์‹ dp๋ฅผ ์‚ฌ์šฉํ•˜์˜€๋‹ค.

d[x]๋Š” 1๋กœ ๋งŒ๋“œ๋Š”๋ฐ ํ•„์š”ํ•œ ์ตœ์†Œ ์—ฐ์‚ฐ ํšŸ์ˆ˜๋กœ ์„ค์ •ํ•˜ใ…—ใ„ฑ,

๋ณธ์ธ์ด ์ฐธ๊ณ ํ•œ ์ž๋ฃŒ(๋ธ”๋กœ๊ทธ, ๋…ผ๋ฌธ ๋“ฑ)๊ฐ€ ์žˆ์œผ๋ฉด ๊ผญ ์ถœ์ฒ˜๋ฅผ ๋‚จ๊ธฐ์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์ฐธ๊ณ  ๋ธ”๋กœ๊ทธ: https://velog.io/@jxlhe46/์•Œ๊ณ ๋ฆฌ์ฆ˜-๋‹ค์ด๋‚˜๋ฏน-ํ”„๋กœ๊ทธ๋ž˜๋ฐ

๋ฐฐ์šด ์ : ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ’€๋ฉฐ ์ƒˆ๋กœ ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๊ฐ„๋žตํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. (์˜ˆ์‹œ : Gaussian Elimination์„ ์‘์šฉํ•ด ์—ญํ–‰๋ ฌ์„ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๊ณ  LU๋ถ„ํ•ด๋ฅผ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ๋‹ค.)

 

0929

๋ชธ์ด ์•ˆ์ข‹์•„์„œ ๊ทธ๋ƒฅ ์ž ........

 

0930

num, caseNum = map(int, input().split())
d = {}

for _ in range(caseNum):
    s = input().strip()
    if s in d:
        del d[s]
    d[s] = True

for x in list(d.keys())[:num]:
    print(x)

ํ’€์ด๊ณผ์ • : ๋‹จ์ˆœํ•˜๊ฒŒ ์ž…๋ ฅ๋ฐ›์€ ๋‹น์‹œ ์ด๋ฏธ ํ•ด๋‹น ๊ฐ’์ด ์กด์žฌํ•˜๋ฉด ๊ธฐ์กด ๊ฐ’์„ ์ง€์šด๋‹ค. ๋ฐ˜๋ณต๋ฌธ์ด ๋๋‚˜๋ฉด ์ œ์‹œ๋œ ์ˆ˜๋งŒํผ ์ฐจ๋ก€๋Œ€๋กœ ์ถœ๋ ฅํ•œ๋‹ค

๋ฐฐ์šด ์ : ๋ฌธ์ œ ์ž์ฒด๋Š” ๊ฐ„๋‹จํ•˜์ง€๋งŒ ์‹œ๊ฐ„ ์ œํ•œ์ด ๋นก๋นกํ•œ ํŽธ์ด๋‹ค. ์ฒ˜์Œ์— ์ผ๋ฐ˜์ ์ธ ๋ฐฉ์‹์œผ๋กœ in ์—ฐ์‚ฐ๊ณผ remove ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ–ˆ๋”๋‹ˆ ์ตœ์•…์˜ ๊ฒฝ์šฐ O(n^2)๊ฐ€ ๋‚˜์˜ค๊ธฐ์— ์‹œ๊ฐ„ ์ดˆ๊ณผ์— ๊ฑธ๋ ธ๋‹ค.

๊ณ ์น˜๊ธฐ ์œ„ํ•ด dict๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ๋‹ค๋งŒ ํŒŒ์ด์ฌ ๋ฒ„์ „์ด ๋‚ฎ์œผ๋ฉด ์ผ๋ฐ˜ dict๊ฐ€ ์ˆœ์„œ๋ฅผ ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ•˜๊ธฐ์— ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค

 

1001

#include <iostream>
#include <vector>
#include <tuple>
using namespace std;

int main(){
	int num(0), height(0), weight(0), score(1);
	vector <tuple<int, int, int>> arr;
	cin >> num;
	
	for(int i = 0; i < num; i++){
		cin >> weight >> height;
		arr.push_back({weight, height, score});
	}
	
	for(int i = 0; i < num; i++){
		for(int j = 0; j < num; j++){
			if(i==j) continue;
			
			 if (get<0>(arr[j]) > get<0>(arr[i]) &&
                get<1>(arr[j]) > get<1>(arr[i])) {
                get<2>(arr[i])++;
		}
		}
	}

	for (int i = 0; i < num; i++) {
	cout << get<2>(arr[i]) << " ";
	}

return 0;
}

ํ’€์ด๊ณผ์ • : tuple์„ ํ†ตํ•ด ๋ฒกํ„ฐ์— ์„ธ ๊ฐœ์˜ ๋ถ„๋ฅ˜๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค.

์ดํ›„ ๋ฐ˜๋ณต๋ฌธ ์—ฐ์‚ฐ์„ ํ†ตํ•ด ๋ชธ๋ฌด๊ฒŒ, ํ‚ค๊ฐ€ ๋ชจ๋‘ ํฐ ๊ฒฝ์šฐ์—๋งŒ ๋ฉ์น˜๊ฐ€ ํฌ๋‹ค๊ณ  ํŒ์ •ํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ ์ตœ์•…์˜ ์ƒํ™ฉ์—์„œ๋„ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n^2)์ด ๋œ๋‹ค. ๋ฌธ์ œ์˜ ์‹œ๊ฐ„ ์กฐ๊ฑด์ด 2์ดˆ๋ฉฐ ์ œํ•œ์— ์ฃผ์–ด์ง„ ์ตœ๋Œ€ ์ˆ˜๊ฐ€ ์ž‘์€ ํŽธ์ด๊ธฐ์— ํ•ด๋‹น ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ๋‹ค

 

1002

num = int(input())
arr = [0]  

for _ in range(num):
    arr.append(int(input()))

d = [0] * (num + 1)

d[1] = arr[1]
if num >= 2:
    d[2] = arr[1] + arr[2]
if num >= 3:
    d[3] = max(arr[1] + arr[3], arr[2] + arr[3])

for i in range(4, num+1):
    d[i] = max(d[i-2] + arr[i], d[i-3] + arr[i-1] + arr[i])

print(d[num])

ํ’€์ด๊ณผ์ • : d[i]๋Š” i๋ฒˆ์งธ ๊ณ„๋‹จ๊นŒ์ง€ ์˜ฌ๋ผ๊ฐ”์„ ๋•Œ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ์ ์ˆ˜๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐฐ์—ด์ด๋‹ค

d[i]๋ฅผ ๋ฐ˜๋ณต๋ฌธ ๋‚ด์—์„œ ๋Œ๋ฆด ๋•Œ, ์ด์ „ ๊ณ„๋‹จ์—์„œ ๋ฐ”๋กœ ์˜ฌ๋ผ์˜ค๊ธฐ or ๋‘ ๊ณ„๋‹จ ๋›ฐ๊ณ  ์˜ฌ๋ผ์˜ค๊ธฐ ์ค‘ ๋” ํฐ ๊ฐ’์„ ๊ณจ๋ผ ๊ฐ’์— ์ง‘์–ด ๋„ฃ๋Š”๋‹ค. ๋งˆ์ง€๋ง‰์—๋Š” d[num]๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

๋ฐฐ์šด ์ : dp๋ฅผ ์ ์šฉ์‹œํ‚ค๋Š” ๊ฒƒ์— ์ต์ˆ™ํ•ด์ง€๋ ค ๋…ธ๋ ฅ ์ค‘์ด

 

1003

#include <bits/stdc++.h>
using namespace std;

int main() {
    int N, M;
    cin >> N >> M;
    vector<string> grid(N);
    for (int i = 0; i < N; i++) cin >> grid[i];
    
    vector<vector<vector<int>>> visited(N, vector<vector<int>>(M, vector<int>(2, 0)));
    queue<tuple<int,int,int,int>> q;
    q.push({0, 0, 1, 0}); 
    visited[0][0][0] = 1;

    int dx[4] = {-1, 1, 0, 0};
    int dy[4] = {0, 0, -1, 1};

    while (!q.empty()) {
        auto [x, y, dist, broken] = q.front();
        q.pop();

        if (x == N-1 && y == M-1) {
            cout << dist << "\n";
            return 0;
        }

        for (int dir = 0; dir < 4; dir++) {
            int nx = x + dx[dir];
            int ny = y + dy[dir];

            if (nx < 0 || ny < 0 || nx >= N || ny >= M) continue;

            if (grid[nx][ny] == '0' && !visited[nx][ny][broken]) {
                visited[nx][ny][broken] = 1;
                q.push({nx, ny, dist + 1, broken});
            }

            if (grid[nx][ny] == '1' && broken == 0 && !visited[nx][ny][1]) {
                visited[nx][ny][1] = 1;
                q.push({nx, ny, dist + 1, 1});
            }
        }
    }

    cout << -1 << "\n";
    return 0;
}

ํ’€์ด๊ณผ์ • : ๊ธฐ์ดˆ ์ฝ”๋“œ๋Š” ppt ๊ทธ๋Œ€๋กœ

while๋ฌธ์„ ํ†ตํ•ด bfs ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•œ๋‹ค. ํ˜„์žฌ์˜ ์œ„์น˜์™€ ์ด๋™ ๊ฑฐ๋ฆฌ, ๋ฒฝ์ด ๋ถ€์ˆด์กŒ๋Š”์ง€์˜ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ดํ›„ if๋ฌธ์„ ํ†ตํ•ด์„œ๋Š” ๋„์ฐฉ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค. ๋งŒ์ผ ๋ชฉํ‘œ ์ง€์ ์— ๋„๋‹ฌํ•˜์˜€๋‹ค๋ฉด ํ˜„์žฌ dist ๊ฐ’์„ ์ถœ๋ ฅํ•œ ๋‹ค์Œ์— ์ข…๋ฃŒํ•œ๋‹ค. bfs๋ฅผ ์ด์šฉํ•˜์˜€๊ธฐ์—, ์ฒ˜์Œ ๋„์ฐฉํ•œ ๊ฒฝ์šฐ๊ฐ€ ์ตœ๋‹จ ๊ฑฐ๋ฆฌ๊ฐ€ ๋œ๋‹ค

๊ทธ ์•„๋ž˜์— ๊น”๋ฆฐ ์ฝ”๋“œ๋Š” ๋นˆ์นธ ์ด๋™/๋ฒฝ ๋ถ€์ˆ˜๊ณ  ์ด๋™์— ๊ด€ํ•œ ๋‚ด์šฉ์ด๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ๋งŒ์ผ ๋„์ฐฉ์ ์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ–ˆ๋‹ค๋ฉด -1์„ ์ถœ๋ ฅํ•œ๋‹ค

์ฐธ๊ณ  ๋ธ”๋กœ๊ทธ: https://gmlwjd9405.github.io/2018/08/15/algorithm-bfs.html

๋ฐฐ์šด ์ : ์ง€๋‚œ ์ฃผ ppt์—์„œ ์ œ๊ณตํ•ด์ฃผ์‹  ๊ธฐ์ดˆ ์ฝ”๋“œ๋ฅผ ํ† ๋Œ€๋กœ ํ’€์ดํ–ˆ๋‹ค. bfs ๊ด€๋ จ ๋ฌธ์ œ๋Š” ํ’€์–ด๋ณด์ง€ ์•Š์•˜๋Š”๋ฐ, ์ด๋ฒˆ์— ํ’€์–ด๋ณด๊ฒŒ ๋˜์–ด ์ข‹์•˜๋‹ค.