https://programmers.co.kr/learn/courses/30/lessons/86971

 

코딩테스트 연습 - 전력망을 둘로 나누기

9 [[1,3],[2,3],[3,4],[4,5],[4,6],[4,7],[7,8],[7,9]] 3 7 [[1,2],[2,7],[3,7],[3,4],[4,5],[6,7]] 1

programmers.co.kr

#include <string>
#include <vector>
#include <iostream>
#include <algorithm>
#include <stdlib.h>
#include <cmath>

using namespace std;

int map[101][101];
int used[101] = { 0 };

int cnt;

void dfs(int a, int n) {
    used[a] = 1;
    cnt++;
    for (int i = 1; i <= n; i++) {
        if (map[a][i]==1 && used[i] == 0) {
            dfs(i, n);
        }
    }
}

int solution(int n, vector<vector<int>> wires) {
    int answer = 999;

    for (int i = 0; i < wires.size(); i++) {
        int a = wires[i][0];
        int b = wires[i][1];

        map[a][b] = 1;
        map[b][a] = 1;
    }


    for (int i = 0; i < wires.size(); i++) {
        int a = wires[i][0];
        int b = wires[i][1];

        map[a][b] = 0;
        map[b][a] = 0;

        int group[2];
        int flag = 0;

        fill(used, used + n + 1, 0);
        
        for (int j = 1; j <= n; j++) {
            if (used[j] == 0) {
                cnt = 0;
                dfs(j, n);
                group[flag] = cnt;
                flag++;
            }
        }

        map[a][b] = 1;
        map[b][a] = 1;
        answer = min(answer, abs(group[0] - group[1]));
    }

    return answer;
}

- TC 27,30 미통과 93.3

#include <iostream>
#include <string>
#include <vector>

using namespace std;

string solution(string m, vector<string> musicinfos) {
    
    for (int x = 0; x < m.size(); x++) {
        if (m[x] == '#') {
            m[x - 1] += 'a' - 'A';
            m.erase(x, 1);
            x--;
        }
    }

    int answerStart;
    int answerTime;
    string answerTitle;

    int SIZE = musicinfos.size();
    for (int i = 0; i < SIZE; i++) {

        string startTime;
        string endTime;
        string musicTitle;
        string musicWords;

        musicinfos[i] += ',';
        int a = 0;
        int j = 0;

        while (1) {
            int b = musicinfos[i].find(',', a);
            if (b == -1)
                break;

            if (j == 0) {
                string sub = musicinfos[i].substr(a, b - a);
                sub.erase(2, 1);
                /*if (sub >= "0000" && sub <= "0059") {
                    sub.erase(0, 2);
                    sub.insert(0, "24");
                }*/
                startTime = sub;
            }

            else if(j == 1) {
                string sub = musicinfos[i].substr(a, b - a);
                sub.erase(2, 1);
                /*if (sub >= "0000" && sub <= "0059") {
                    sub.erase(0, 2);
                    sub.insert(0, "24");
                }*/
                endTime = sub;
            }

            else if(j==2) musicTitle = musicinfos[i].substr(a, b - a);
            
            else {
                musicWords = musicinfos[i].substr(a, b - a);
                int tmplen = stoi(endTime) - stoi(startTime);
                int infolen = musicWords.size();

                for (int x = 0; x < infolen; x++) {
                    if (musicWords[x] == '#') {
                        musicWords[x - 1] += 'a' - 'A';
                        musicWords.erase(x, 1);
                        x--;
                    }
                }

                while (1) {
                    infolen = musicWords.size();
                    if (infolen >= tmplen)
                        break;

                    musicWords += musicWords;
                }

                if (infolen >= tmplen)
                    musicWords.erase(tmplen, infolen - tmplen);
            }
            
            j++;
            a = b + 1;
            
        }

        int ret = musicWords.find(m, 0);
        if (ret > -1) {
            if (answerTitle == "") {
                answerTime = stoi(endTime) - stoi(startTime);
                answerTitle = musicTitle;
                answerStart = stoi(startTime);
            }
            else {
                int sizeCheck = stoi(endTime) - stoi(startTime);
                if (answerTime < sizeCheck) {
                    answerTime = sizeCheck;
                    answerTitle = musicTitle;
                    answerStart = stoi(startTime);
                }
                /*else if (answerTime == sizeCheck) {
                    if (answerStart > stoi(startTime)) {
                        answerTime = stoi(endTime) - stoi(startTime);
                        answerTitle = musicTitle;
                        answerStart = stoi(startTime);
                    }
                }*/
            }
        }

    }

    if (answerTitle == "")
        return "(None)";

    return answerTitle;
}

 

- Duration 재생시간 몇분인지 구하는 공식 확인, (27통과)

  음악 길이보다 재생된 시간이 짧을 때는 처음부터 재생 시간만큼만 재생된다. -> 해당조건 재확인(30통과)

#include <iostream>
#include <string>
#include <vector>

using namespace std;

string solution(string m, vector<string> musicinfos) {
    
    for (int x = 0; x < m.size(); x++) {
        if (m[x] == '#') {
            m[x - 1] += 'a' - 'A';
            m.erase(x, 1);
            x--;
        }
    }

    int answerTime;
    string answerTitle;

    int SIZE = musicinfos.size();
    for (int i = 0; i < SIZE; i++) {

        string startTime;
        string endTime;
        int musicDuration;
        string musicTitle;
        string musicWords;

        musicinfos[i] += ',';
        int a = 0;
        int j = 0;

        while (1) {
            int b = musicinfos[i].find(',', a);
            if (b == -1)
                break;

            if (j == 0) {
                string sub = musicinfos[i].substr(a, b - a);
                sub.erase(2, 1);
                startTime = sub;
            }

            else if(j == 1) {
                string sub = musicinfos[i].substr(a, b - a);
                sub.erase(2, 1);
                endTime = sub;

                int sth = stoi(startTime.substr(0, 2));
                int stm = stoi(startTime.substr(2, 2));
                int eth = stoi(endTime.substr(0, 2));
                int etm = stoi(endTime.substr(2, 2));

                int h = eth - sth;
                int m = etm - stm;
                if (h < 0) h += 24;
                if (m < 0) {
                    h -= 1;
                    m += 60;
                }

                musicDuration = h * 60 + m;
            }

            else if(j==2) musicTitle = musicinfos[i].substr(a, b - a);
            
            else {
                musicWords = musicinfos[i].substr(a, b - a);
                int infolen = musicWords.size();

                for (int x = 0; x < infolen; x++) {
                    if (musicWords[x] == '#') {
                        musicWords[x - 1] += 'a' - 'A';
                        musicWords.erase(x, 1);
                        x--;
                    }
                }

                while (1) {
                    infolen = musicWords.size();
                    if (infolen >= musicDuration)
                        break;

                    musicWords += musicWords;
                }
                
                musicWords.erase(musicDuration, infolen - musicDuration);

            }
            
            j++;
            a = b + 1;
            
        }

        int ret = musicWords.find(m, 0);
        if (ret > -1) {
            

            if (answerTitle == "") {
                answerTime = musicDuration;
                answerTitle = musicTitle;
            }
            else {
                if (answerTime < musicDuration) {
                    answerTime = musicDuration;
                    answerTitle = musicTitle;
                }
            }
        }

    }

    if (answerTitle == "")
        return "(None)";

    return answerTitle;
}

int main() {

    string m = "CC#BCC#BCC#BCC#B";
    vector<string> musicinfos = { "03:00,03:30,FOO,CC#B", "23:59,00:08,BAR,CC#BCC#BCC#B" };

    cout << solution(m, musicinfos);

    return 0;
}

- conf파일 네트워크 수정 후 빈 ssh파일만 넣고 진행하였으나 이전과 동일하게 IP확인이 불가하였으며 로그인또한 실패하였습니다.

- OS재설치 및 mac주소로 고정 IP할당해보아도 부팅시conf파일이랑 ssh파일은 사라지는데 IP주소로 pi로그인이 넘어가지 않습니다ㅠㅠㅠㅠ(정말 구글링으로 많은 방법을 시도해 보았습니다)

- 라즈베리파이4로 ssh접속하였을때는 문제없이 연결되었습니다. (제로는 와이파이 연결이 불가하여 ssh연결도 실패)

- 전일 미니 hdmi 젠더 주문하여 수요일 도착하면 모니터 연결해서 다시해보려고 합니다.

 

 

>>>>>>>>>라즈베리파이 연결 성공하여 말씀드립니다.

- GUI환경에서 진행해야될것같아 미니HDMI 변환젠더, USB 변환젠더 구매하여 OS재설치부터 다시 시작했습니다.

- GUI환경에서 확인해보니 와이파이가 LG공유기 뿐만아니라 휴대폰 데이터 핫스팟으로도 아예 잡히지 않았습니다.

- SSID는 검색이 되는데 비밀번호를 제대로 입력해도 와이파이 표시가 깜박거리기만하고 연결이 되지않았습니다.

 

하여 다시금 구글링을 통해 다양한 방법으로 시도해 보았고 오늘 드디어 연결성공해서 SSH 연결까지 확인하였습니다.

 

- 도움이 됐던 블로그들

https://www.clien.net/service/board/cm_rasp/16453520

 

라즈베리파이 고질병 WIFI 문제 패치 소식 = 해결법 : 클리앙

라즈베리파이에는 고질병이 있었죠. 한국에서만 계속 발생하던 와이파이 연결 안됨 문제!! 예전에도 이 이슈로 땜방 해결책을 올렸던 인간입니다. 그런데 이 문제가 해결된 공식 패치가 드디어

www.clien.net

-> 업그레이드 버전 패치 후 파일 덮어쓰기

(이 방법 시도후 아래 방식으로 와이파이 연결시 성공했습니다)

 

https://webnautes.tistory.com/903 

 

Raspberry Pi 4 에서 무선랜(WiFi) 설정하는 방법

Raspberry Pi 4에 내장된 무선랜(WiFi)를 사용하기 위해 필요한 설정 방법에 대해서 다룹니다.       1. raspi-config를 사용하여 WiFi 설정     2. 커맨드 명령으로 WiFi 연결 설정 및 테스트     3..

webnautes.tistory.com

-> raspi-config 사용하여 wifi 설정

 

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=keunsik114&logNo=221005393193

 

라즈베리파이(raspberry pi) - SSH 로그인 disable 및 해결방안 20170514

라즈베리 파이 롬 이미지가 2016년 10월부터인가 갑자가 SSH 를 disable 를 기본 설정으로 바뀌었다. 내...

blog.naver.com

-> SSH Enable 변경

 (GUI환경이라면 라즈베리파이 설정에서 변경)

 

- 와이파이 설정

보안규칙 : WPA

WPA 모드 : WPA2-PSK

암호화 방식 : AES

비밀번호 : 특수문자 '_' 가능확인

채널 : 수동 10번 이하 (3 사용)

 

'참고' 카테고리의 다른 글

[WEB에서 Rendering 기술 차이] CSR vs SSR  (0) 2021.12.27
[Docker]시작하기  (0) 2021.12.26
[리눅스쉘 명령어/ 단축키]  (0) 2021.09.26
메모리크기, 시간복잡도  (0) 2021.08.25

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV15QRX6APsCFAYD&categoryId=AV15QRX6APsCFAYD&categoryType=CODE&problemTitle=1249&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <string>

using namespace std;

struct node {
    int y;
    int x;
};

int main() {

    int test_case;
    int T;
    cin >> T;

    for (test_case = 1; test_case <= T; ++test_case) {
        int k;
        cin >> k;

        int map[100][100];
        int used[100][100]={0};
        int path[100][100];

        string st;
        for (int y = 0; y < k; y++) {
            cin >> st;
            for (int x = 0; x < k; x++) {
                map[y][x] = st[x] - '0';
            }
        }

        queue<node>q;

        int direct[4][2] = {
            -1,0,
            1,0,
            0,-1,
            0,1
        };

        path[0][0] = 0;
        q.push({ 0,0 });
        used[0][0] = 1;
        while (!q.empty()) {
            node now = q.front();
            q.pop();

            for (int i = 0; i < 4; i++) {
                int dy = now.y + direct[i][0];
                int dx = now.x + direct[i][1];
                if (dy < 0 || dx < 0 || dy >= k || dx >= k) continue;
                if (used[dy][dx]==0 || path[dy][dx] > path[now.y][now.x] + map[dy][dx]) {
                    q.push({ dy, dx });
                    used[dy][dx] = 1;
                    path[dy][dx] = path[now.y][now.x] + map[dy][dx];
                }
            }
        }

        cout << "#" << test_case << " " << path[k-1][k-1] << endl;
    }

    return 0;
}

'APS > SWEA' 카테고리의 다른 글

1231. [S/W 문제해결 기본] 9일차 - 중위순회 C++  (0) 2021.11.20
8659.GCD c++  (0) 2021.11.19
1216. [S/W 문제해결 기본] 3일차 - 회문2  (0) 2021.11.19
1860. 진기의 최고급 붕어빵  (0) 2021.11.09
12052. 부서진 타일 c++  (0) 2021.11.09

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV140YnqAIECFAYD 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <string>
 
using namespace std;
 
int main() {
 
    //int test_case;
    //int T;
    //cin >> T;
 
    vector<pair<int, char>>vec;
    vector<int> sun;
    for (int test_case = 1; test_case <= 10; test_case++) {
        int n;
        cin >> n;
 
        vec.clear();
        sun.clear();
 
        int num;
        char ch;
        int be_num;
        int next_num;
        for (int i = 0; i < n; i++) {
            cin >> num;
            cin >> ch;
            vec.push_back(make_pair(num, ch));
            if (i == 0) sun.push_back(num);
 
            int point;
            if (i < (n - 1) / 2) {
                cin >> be_num >> next_num;
                for (int x = 0; x < sun.size(); x++) {
                    if (sun[x] == num) point = x;
                }
                if (point - 1 < 0)
                    sun.insert(sun.begin(), be_num);
                else
                    sun.insert(sun.begin() + point, be_num);
 
                sun.insert(sun.begin() + point + 2, next_num);
            }
 
            if ((n - 1) % 2 == 1 && i == (n - 1) / 2) {
                cin >> be_num;
                for (int x = 0; x < sun.size(); x++) {
                    if (sun[x] == num) point = x;
                }
                if (point - 1 < 0)
                    sun.insert(sun.begin(), be_num);
                else
                    sun.insert(sun.begin() + point, be_num);
            }
        }
 
        cout << "#" << test_case << " ";
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if (sun[i] == vec[j].first)
                    cout << vec[j].second;
            }
        }
        cout << endl;
    }
 
    return 0;
}

'APS > SWEA' 카테고리의 다른 글

1249. [S/W 문제해결 응용] 4일차 - 보급로 c++  (0) 2021.11.20
8659.GCD c++  (0) 2021.11.19
1216. [S/W 문제해결 기본] 3일차 - 회문2  (0) 2021.11.19
1860. 진기의 최고급 붕어빵  (0) 2021.11.09
12052. 부서진 타일 c++  (0) 2021.11.09

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AW1l1s2KWn4DFARC 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

- 규칙찾기 (정답)

a2 = a1+b1 / b2= a1;

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <string>

using namespace std;

int main() {

    int test_case;
    int T;
    cin >> T;

    for (test_case = 1; test_case <= T; ++test_case) {
        int k;
        cin >> k;

        long long map[100][2];
        pair<long long, long long> result;
        
        map[0][0] = 2;
        map[0][1] = 1;
        for (int i = 1; i < k; i++) {
            map[i][0] = map[i-1][0] + map[i-1][1];
            map[i][1] = map[i - 1][0];
        }
        
        result.first = map[k - 1][0];
        result.second = map[k - 1][1];

        cout << "#" << test_case << " " << result.first << " " << result.second << endl;
    }

    return 0;
}

 

- 완전탐색 구현하면 시간복잡도 큼.. (디버깅에러)

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <string>
//#include <fstream>

using namespace std;

pair<int, int>result;
int flag;
int k;

void check(int startNum, int changeNum) {

    if (changeNum <= 0) {
        return;
    }

    int a = startNum;
    int b = changeNum;
    for (int i = 0; i < k; i++) {
        
        int temp = a % b;
        if (temp == 0) {
            if (i == k - 1) {
                flag = 0;
                result.first = startNum;
                result.second = changeNum;
                return;
            }
            break;
        }
        else if(temp!=0){
            a = b;
            b = temp;
        }
    }

    check(startNum, changeNum -= 1);

}

int main() {

    int test_case;
    int T;
    cin >> T;

    for (test_case = 1; test_case <= T; ++test_case) {
        
        cin >> k;

        int Num = 1;
        flag = 1;
        while (flag) {
            check(Num +=1, Num - 1);
        }

        cout << "#" << test_case << " " << result.first <<" "<<result.second << endl;
    }

    return 0;
}

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV14Rq5aABUCFAYi 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

#include <iostream>
#include <vector>
#include <algorithm>
#include <queue>
#include <string>
//#include <fstream>

using namespace std;

char map[101][101];

int direct[2][2] = {
    0,1, //우측
    1,0 //아래
};

int MAX;
vector<char>str;

void Right_check(int y, int x, int len) {
    int flag = 0;

    str.push_back(map[y][x]);

    if (len!=1) {
        for (int j = 0; j < len / 2; j++) {
            if (str[j] != str[len - 1 - j]) {
                flag = 1;
                break;
            }
        }
        
        if (flag == 0) {
            if (len > MAX)
                MAX = len;
        }

	}

	int dy = y + direct[0][0];
	int dx = x + direct[0][1];
	if (dy < 0 || dx < 0 || dy >= 100 || dx >= 100) 
        return;

	Right_check(dy, dx, len+=1);
	str.pop_back();

}

void down_check(int y, int x, int len) {
    int flag = 0;
    str.push_back(map[y][x]);

    if (len != 1) {
        for (int j = 0; j < len / 2; j++) {
            if (str[j] != str[len - 1 - j]) {
                flag = 1;
                break;
            }
        }
 
        if (flag == 0) {
            if (len > MAX)
                MAX = len;
        }

    }

    int dy = y + direct[1][0];
    int dx = x + direct[1][1];
    if (dy < 0 || dx < 0 || dy >= 100 || dx >= 100) 
        return;
    down_check(dy, dx, len+=1);
    str.pop_back();

}

int main() {

    //ofstream fout;
    //fout.open("a.txt");


    //ifstream fin;
    //fin.open("input.txt");

    int test_case;
    
    for (test_case = 1; test_case <= 10; ++test_case) {
        int T;
        cin >> T;

        MAX = 0;
        for (int x = 0; x < 100; x++) {
            cin >> map[x];
        }
        

        for (int y = 0; y < 100; y++) {
            for (int x = 0; x < 100; x++) {
                str.clear();
                Right_check(y, x, 1);
                str.clear();
                down_check(y, x, 1);
            }
        }

        cout << "#" << test_case << " " << MAX << endl;
    }

    //fin.close();
    //fout.close();

    return 0;
}

'APS > SWEA' 카테고리의 다른 글

1231. [S/W 문제해결 기본] 9일차 - 중위순회 C++  (0) 2021.11.20
8659.GCD c++  (0) 2021.11.19
1860. 진기의 최고급 붕어빵  (0) 2021.11.09
12052. 부서진 타일 c++  (0) 2021.11.09
2805. 농작물 수확하기 c++  (0) 2021.11.07

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LsaaqDzYDFAXc&categoryId=AV5LsaaqDzYDFAXc&categoryType=CODE&problemTitle=1860&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=&pageSize=10&pageIndex=1 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

967/1000 - 뭐가 문제일깜..

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {

	int t;
	cin >> t;
	for (int i = 0; i < t; i++) {
		int n,m,k;

		cin >> n >> m >> k;

		vector<int> vec;

		int num;
		for (int x = 0; x < n; x++) {
			cin >> num;
			vec.push_back(num);
		}

		sort(vec.begin(), vec.end());

		string result = "Possible";

		long long cnt = 0;
		long long boo = 0;
		int flag = 0;
		while (!vec.empty()) {
			if (cnt == m) {
				boo += k;
				m += m;
			}

			while(!vec.empty() && vec[0] == cnt){
				if ( boo > 0) {
					vec.erase(vec.begin());
					boo--;
				}
				else {
					result = "Impossible";
					flag++;
					break;
				}
			}

			if (flag > 0) {
				break;
			}

			cnt++;
		}

		cout << "#" << i + 1 << " " << result << endl;
	}

	return 0;
}

 

- 파일로 저장해서 틀린 TC 찾기

#include <iostream>
#include <vector>
#include <algorithm>
#include <fstream>

using namespace std;

int main() {

	ofstream fout;
	fout.open("a.txt");


	ifstream fin;
	fin.open("input.txt");

	int t;
	fin >> t;
	for (int i = 0; i < t; i++) {
		int n, m, k;

		fin >> n >> m >> k;

		vector<int> vec;

		int num;
		for (int x = 0; x < n; x++) {
			fin >> num;
			vec.push_back(num);
		}

		sort(vec.begin(), vec.end());

		string result = "Possible";

		int cnt = 0;
		int boo = 0;
		int flag = 0;
		while (!vec.empty()) {
			if (cnt == m) {
				boo += k;
				m += m;
			}

			while (!vec.empty() && vec[0] == cnt) {
				if (boo > 0) {
					vec.erase(vec.begin());
					boo--;
				}
				else {
					result = "Impossible";
					flag++;
					break;
				}
			}

			if (flag > 0) {
				break;
			}

			cnt++;
		}

		fout << "#" << i + 1 << " " << result << endl;
	}

	fin.close();
	fout.close();

	return 0;
}

 

- (정답코드)

m+=m 이러면 말이 안됨, cnt!=0 && cnt%m==0 수정

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() {

	int t;
	cin >> t;
	for (int i = 0; i < t; i++) {
		int n, m, k;

		cin >> n >> m >> k;

		vector<int> vec;

		int num;
		for (int x = 0; x < n; x++) {
			cin >> num;
			vec.push_back(num);
		}

		sort(vec.begin(), vec.end());

		string result = "Possible";

		int cnt = 0;
		int boo = 0;
		int flag = 0;
		while (!vec.empty()) {
			if (cnt!=0 && cnt % m==0) 
				boo += k;

			while (!vec.empty() && vec[0] == cnt) {
				if (boo > 0) {
					vec.erase(vec.begin());
					boo--;
				}
				else {
					result = "Impossible";
					flag++;
					break;
				}
			}

			if (flag > 0) {
				break;
			}

			cnt++;
		}

		cout << "#" << i + 1 << " " << result << endl;
	}

	return 0;
}

'APS > SWEA' 카테고리의 다른 글

8659.GCD c++  (0) 2021.11.19
1216. [S/W 문제해결 기본] 3일차 - 회문2  (0) 2021.11.19
12052. 부서진 타일 c++  (0) 2021.11.09
2805. 농작물 수확하기 c++  (0) 2021.11.07
1859. 백만 장자 프로젝트 C++  (0) 2021.11.07

+ Recent posts