2024/03 4

[C++] 20291. 파일정리

map을 이용하면 쉽게 풀리는 구현문제이다. string 입력에서 어떻게 해야할지만 안다면 바로 풀린다. 문자열 일부를 return하는 substr함수를 이용해서 '.' 다음 글자부터 끝까지 return받는다. 그렇게 받은 값을 맵에 저장한다. (default가 오름차순이므로) #include #include using namespace std; int main(void) { ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int N; cin >> N; map m; for(int i=0; i> t; string extension = t.substr(t.find('.')+1); m[extension]++; } for(auto x : m) cout

[C++] 16926. 배열 돌리기1

아.. 인덱스가 너무 헷갈리고 회전 레이어 다루는게 어려워서 어려운 문제가 아니었는데도 좀 고전했다.. 다시 풀어봐야할 것 같다ㅜㅠ (확실히 구현에 좀 약한듯..) 우선, 회전 레이어 갯수는 N 또는 M 중 작은 값을 2로 나눈 값과 같다. 시작점은 (0,0), (1,1) ...로 되므로 이를 이용하여 시작점을 잡아주면 된다. 우선, 회전하는 방법을 잘 생각해야 하는데, 시작점을 0,0으로 잡았기 때문에 이를 temp 변수에 넣어주고 시작점부터 채워주기 시작한다. [ 시작점부터 채우는 방향 ] 맨 윗줄 : 오 -> 왼 방향으로 채워준다 가장 오른쪽 열 : 아래 -> 위 방향으로 채워준다 맨 아랫줄 : 왼 -> 오 방향으로 채워준다 가장 왼쪽 열 : 위 -> 아래 방향으로 채워준다. 이 과정을 각 레이어마..

[C++] 16234. 인구이동

이번 문제는 bfs문제이다. 백준의 토마토와 비슷한 문제이다. 토마토도 괜찮은 문제이니 한번 풀어보길 추천한다! -> 토마토 문제 바로가기 전체 영토 중 방문하지 않은 영토부터 차례대로 순회를 시작한다. 큐에 넣어놓고 주변 영토(상하좌우)를 방문해보며 연합이 될 수 있는지 조건을 체크한다. 연합이 될 수 있으면 bfs용 큐와 연합들을 저장할 벡터에 저장해주고 총합을 더해준다. (나중에 인구수 조정을 위함) 연합이 만들어졌다면 (2개이상) 인구수를 조정해준다. 두번째 for루프에서 방문을 검사하는 코드, 즉 bfs를 실행하는 코드는 같은 날 다른 연합을 또 만들어야하므로 연합을 저장해주는 벡터를 초기화해준다. 두개의 for루프가 끝나고 연합이 아직 남아있다면 days를 증가시켜주고 위 과정을 연합이 만들어..

[C++] 17413. 단어 뒤집기2

오랜만에 string 문제를 들고와봤다. 문제는 쉬운편인데, 나는 진짜 단순하게 풀었다. 조금 더 생각하면 깔끔한 코드가 나올 것 같기도 한데, 일단 queue에 무지성으로 때려박고 tag와 단어, 공백 3가지 유형으로 넣어주었다. 출력할때는 단어인 경우에만 reverse를 이용해서 출력해주었다. #include #include #include using namespace std; /* a-z, 0-9, ,(두개 개수 같음) 태그 말고 단어만 뒤집어서 출력 태그는 안으로 길이는 3이상, 공백 포함가능 태그와 단어사이에는 공백 없음 --- // inputs string tag; string words; queue q; if (input starts '') { tag += input; } q.p..

728x90