BOJ - Potato 28464
·
코딩테스트
해결방법입력을 받으면서 전체 합계를 구해두고, 오름차순 정렬을 한다.감자튀김을 한쪽은 최대한 많이, 한쪽은 최대한 적게 가져가야 하기 때문에, 앞에서 절반을 성우가 가져가고, 나머지 전체 감자튀김에서 성우가 가져간 양을 제외하면 박모씨가 가져간 양이 된다. 정답 코드#include #include #include using namespace std;int main(){ int N, A = 0, B = 0; cin >> N; vector Chips(N); for (int i = 0; i > Chips[i]; A += Chips[i]; } sort(Chips.begin(), Chips.end()); for (int i = 0; i
BOJ - 임시 반장 정하기 1268
·
코딩테스트
해결방법학생들을 1~5학년까지의 반을 이차원 배열 형식으로 입력받는다. 그 다음 모든 학생들을 자기 자신을 제외한 다른 모든 학생들과 1~5학년까지 같은 반이었는지를 체크하여 리더 카운트를 올리면서 임시 반장을 구하면 된다. 정답 코드#include #include using namespace std;int main(){ int std; int max = -1; int leader = 0; cin >> std; vector> classmates(std, vector(5)); vector classmates_count(std, 0); for (int i = 0; i > classmates[i][j]; } } for (int i = 0; i max) { max = classmates_count[i]..
BOJ - 유기농 배추 1012
·
코딩테스트
해결방법크게 배추밭과 배추의 위치를 입력하는 부분과 실제로 배추흰지렁이가 필요한 개수를 구하는 부분으로 나눠서 생각할 수 있다.입력부의 경우 그냥 입력받는 좌표를 이차원 배열로 변환하여 입력받으면 된다. 배추 흰지렁이는 배추가 연결되어 있기만 한다면 전부 커버가 가능하다는 점을 이용해서 문제를 풀 수 있다. 여기서는 큐를 이용하는데, 좌상단에서 우하단으로 훝으면서 배추를 찾는다.배추가 발견되었다면 필요한 배추흰지렁이의 수를 1 늘리고, 이 지점을 방문했다는 표시를 한다.그리고 큐에 현재의 위치를 집어넣는다. 그 다음은 큐가 비어있지 않는 한 계속 반복하는 while문인데, 큐에서 가장 위에 있는 값을 꺼내고, 그 값을 삭제한다.이 값은 배추가 있는 위치좌표인데, 이 위치좌표에서 상하좌우에 배추가 있는지를..
BOJ - 판화 1730
·
코딩테스트
해결방법핵심 부분만 자세히 살펴보자면if (arr[x][y] == '.')arr[x][y] = (c == 'L' || c == 'R') ? '-' : '|';else if ((arr[x][y] == '-' && (c == 'U' || c == 'D')) || (arr[x][y] == '|' && (c == 'L' || c == 'R')))arr[x][y] = '+';if (arr[nx][ny] == '.')arr[nx][ny] = (c == 'L' || c == 'R') ? '-' : '|';else if ((arr[nx][ny] == '-' && (c == 'U' || c == 'D')) || (arr[nx][ny] == '|' && (c == 'L' || c == 'R')))arr[nx][ny] = ..
BOJ - 카약과 강풍 2891
·
코딩테스트
해결방법먼저 카약이 부서진 수와 여분을 가져온 사람의 수로 bool 자료형 벡터 배열을 만들고, 각각 부서진 사람과 여분이 가져온 사람의 번호를 true로 만든다. 만약 여분을 가져온 사람의 카약이 부서졌다면 그 사람의 여분과 부서진 플래그를 제외하고, 부서진 사람의 앞과 뒤 번호의 여분 여부를 체크하여 플래그가 내려가는지를 체크하면 된다. 정답 코드#include #include using namespace std;int main(){ int N, S, R, temp, count = 0; cin >> N >> S >> R; vector broken(N + 2, false), extra(N + 2, false); for (int i = 0; i > temp; broken[temp] = true; } ..
BOJ - 다각형의 대각선 3049
·
코딩테스트
해결방법세 대각선이 한 점에서 만나지 않는 볼록 N각형이라는 말을 보고 당황했을것이다.개수를 일일히 세어야 하나 생각할 수 있지만, 사각형의 대각선은 2개라는 점을 생각해보면 볼록 N각형에서 4개의 점을 잡아서 사각형을 만들수 있다.이때 이 사각형의 교점은 단 하나이니 볼록 N각형에서 4개의 점을 순서없이 고르는 연산을 하면 된다.따라서 식은 nC4가 되며, 이는 ((N * (N - 1) * (N - 2) * (N - 3)) / 24)가 된다. 정답 코드#include using namespace std;int main(){ int N, sum; cin >> N; sum = ((N * (N - 1) * (N - 2) * (N - 3)) / 24); cout