[백준/c++] 1652번: 누울 자리를 찾아라
·
알고리즘/백준
https://www.acmicpc.net/problem/1652 1652번: 누울 자리를 찾아라 첫째 줄에 방의 크기 N이 주어진다. N은 1이상 100이하의 정수이다. 그 다음 N줄에 걸쳐 N개의 문자가 들어오는데 '.'은 아무것도 없는 곳을 의미하고, 'X'는 짐이 있는 곳을 의미한다. www.acmicpc.net 분명 쉬운 문제인데 반례 혹은 숨겨진 조건을 찾는 게 너무너무 ㄹ어렵다.... 흑흑... 이거 하나때문에 시간을 얼마나 쓰는 건지 열받아 죽을 거 같다 가로 세로 따로 구하면 되는데, 이게 진짜 열받는 게 뭐냐면 예제에서는 보이지 않는 조건들이 날 괴롭힌다.. 하지만.. 열심히 혼자 잘 찾아야 한다. 아직까진 질문 검색 카테고리에서 도움을 받고 있는데 언제까지고 할 수 없는 노릇이라.. ..
[백준/c++] 1913번: 달팽이
·
알고리즘/백준
https://www.acmicpc.net/problem/1913 1913번: 달팽이 N개의 줄에 걸쳐 표를 출력한다. 각 줄에 N개의 자연수를 한 칸씩 띄어서 출력하면 되며, 자릿수를 맞출 필요가 없다. N+1번째 줄에는 입력받은 자연수의 좌표를 나타내는 두 정수를 한 칸 띄어서 www.acmicpc.net 홀수 자연수 N 달팽이 모양으로 채울 수 있다. 중간부터 하지 말고 처음부터(n*n 수가 들어갈 (0,0)) 값을 넣어주면서 뱅글 돌아가면 쉽다. dx, dy를 사용해서 방향(d)에 따라서 이동할 위치를 더해주면 되는데, 조건은 n을 벗어나지 않을 것 && 이동할 위치가 0일 것. 만약 n을 벗어나거나 이동할 위치에 값이 이미 있다면(0이 아니라면) 방향을 바꿔서 이동해야 한다. 방향은 하 → 우 ..
[백준/c++] 2578번: 빙고
·
알고리즘/백준
https://www.acmicpc.net/problem/2578 2578번: 빙고 첫째 줄부터 다섯째 줄까지 빙고판에 쓰여진 수가 가장 위 가로줄부터 차례대로 한 줄에 다섯 개씩 빈 칸을 사이에 두고 주어진다. 여섯째 줄부터 열째 줄까지 사회자가 부르는 수가 차례대로 www.acmicpc.net 25개의 칸으로 이루어진 빙고칸. 1~25 자연수를 한 칸에 하나씩 가로, 세로, 대각선 위에 있는 5개의 모든 수가 지워지면 그 줄에 선을 긋는다 선이 세 개 이상 그어지면 빙고 가장 먼저 빙고면 게임의 승자 사회자가 부르는 수가 차례대로 한 줄에 다섯개씩 빈 칸을 사이에 두고 주어진다. 사회자가 몇 번째 수를 부른 후 철수가 "빙고"를 외치게 되는지 출력 #include using namespace std;..
[백준/c++] 21918번: 전구
·
알고리즘/백준
https://www.acmicpc.net/problem/21918 21918번: 전구 $N$개의 전구가 있고 맨 왼쪽에 있는 전구를 첫 번째라고 하자. 전구의 상태는 두 가지가 있으며 이를 숫자로 표현한다. $1$은 전구가 켜져 있는 상태를 의미하고, $0$은 전구가 꺼져 있는 상태를 www.acmicpc.net 1번 명령어 [i, x]: i번째 전구 상태를 x로 변경 2번 명령어 [l,r]: l번째부터 r번째까지의 전구 상태 변경 3번 명령어 [l,r]: l번째부터 r번째까지의 전구를 끈다 4번 명령어 [l,r]: l번째부터 r번째까지의 전구를 켠다 #include using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.t..
[백준/c++] 5597번: 과제 안 내신 분..?
·
알고리즘/백준
https://www.acmicpc.net/problem/5597 5597번: 과제 안 내신 분..? X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데, www.acmicpc.net set을 사용해서 없는 숫자를 바로바로 출력해주면 된다. set의 count 함수를 사용하면 해당 원소가 몇 개 있는지 알 수 있다. #include #include using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n = 28; set s; while(n--){ int a; ci..
[백준/c++] 20053번: 최소, 최대 2
·
알고리즘/백준
https://www.acmicpc.net/problem/20053 20053번: 최소, 최대 2 N개의 정수가 주어진다. 이때, 최솟값과 최댓값을 구하는 프로그램을 작성하시오. www.acmicpc.net 벡터에 각 원소들을 넣어주고 sort 정렬을 해주면 작은 값부터 큰 값이 정렬되므로 최솟값, 최댓값을 출력해준다. 테스트 케이스가 여러 개 나올 수 있으므로 꼭 벡터를 clear 해준다. #include #include #include using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t; vector v; cin >> t; while(t--){ int n; cin >> n; for(int i=0..
[백준/c++] 1212번: 8진수 2진수
·
알고리즘/백준
https://www.acmicpc.net/problem/1212 1212번: 8진수 2진수 첫째 줄에 8진수가 주어진다. 주어지는 수의 길이는 333,334을 넘지 않는다. www.acmicpc.net 8진수를 2진수로 변환하기 수가 0인 경우를 제외하고 1로 시작해야 한다. 💡 8진수 한 자리당 2진수 3자리로 표현해야 한다. 문자열을 사용해서 하면 되는데 여기서 2진수로 바뀔 때 꼭 뒤집어야 한다는 것을 잊으면 안 된다! #include #include #include using namespace std; string changeTo2(char ch){ int x = ch - '0'; string two = ""; if(x == 0) return "0"; while(x != 0){ two += to..
[백준/c++] 10812번: 바구니 순서 바꾸기
·
알고리즘/백준
https://www.acmicpc.net/problem/10812 10812번: 바구니 순서 바꾸기 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2 www.acmicpc.net 처음엔, while 반복문으로 tmp 배열을 복사해서 하나하나 옮겨줬는데 시간 초과 발생..!! rotate 함수를 사용하면 된다. begin에서 end를 mid 기준으로 회전하는 함수인데, 맨 앞에 있는 원소는 맨 뒤로 이동하고 +1을 할수록 원소가 좌측으로 이동한다. #include #include #define MAX 101 using namespace std; int main(..
[백준/c++] 16926번: 배열 돌리기 1
·
알고리즘/백준
https://www.acmicpc.net/problem/16926 16926번: 배열 돌리기 1 크기가 N×M인 배열이 있을 때, 배열을 돌려보려고 한다. 배열은 다음과 같이 반시계 방향으로 돌려야 한다. A[1][1] ← A[1][2] ← A[1][3] ← A[1][4] ← A[1][5] ↓ ↑ A[2][1] A[2][2] ← A[2][3] ← A[2][4] A[2][5] www.acmicpc.net 요즘 이 문제가 코테에 많이 등장하고 있다고 한다. 이번에는 이 배열 돌리기를 한번 쭉 풀어보도록 하겠다!! (어떻게 하면 더 효율적으로 할 수 있을까...🤔) 가장 바깥 테두리 회전 - 그 안의 가장 바깥 테두리 회전 [반복] 테두리에서부터 중앙까지의 depth를 계산해서 인덱스를 다룰 수 있다. n과..
녕이
'구현' 태그의 글 목록 (2 Page)