본문 바로가기

C C++166

[C/C++] 마라톤 문제 KSEA 장거리 달리기 대회가 진행되어 모든 선수가 반환점을 넘었다. 각 선수의 입장에서 자 기보다 앞에 달리고 있는 선수들 중 평소 실력이 자기보다 좋은 선수를 남은 거리 동안 앞지 르는 것은 불가능하다. 반대로, 평소 실력이 자기보다 좋지 않은 선수가 앞에 달리고 있으면 남은 거리 동안 앞지르는 것이 가능하다. 이러한 가정 하에서 각 선수는 자신이 앞으로 얻을 수 있는 최선의 등수를 알 수 있다. 각 선수의 평소 실력은 정수로 주어지는데 더 큰 값이 더 좋은 실력을 의미한다. 현재 달리고 있는 선수를 앞에서 부터 표시했을 때 평소 실력이 각각 2, 8, 10, 7, 1, 9, 4, 15라고 하면 각 선수가 얻을 수 있는 최선의 등수는 (같은 순서로) 각각 1, 1, 1, 3, 5, 2, 5, 1.. 2022. 9. 28.
[C/C++] 석차 구하기 문제 N명의 학생의 수학점수가 입력되면 각 학생의 석차를 입력된 순서대로 출력하는 프로그램을 작성하세요. 입력설명 첫 줄에 N(1 2022. 9. 28.
[C/C++] 유쾌한 점퍼 (Jolly Jumper) 문제 N개의 정수로 이루어진 수열에 대해 서로 인접해 있는 두 수의 차가 1에서 N-1까지의 값을 모두 가지면 그 수열을 유쾌한 점퍼(jolly jumper)라고 부른다. 예를 들어 다음과 같은 수열에 서 1 4 2 3 앞 뒤에 있는 숫자 차의 절대 값이 각각 3 ,2, 1이므로 이 수열은 유쾌한 점퍼가 된다. 어떤 수열이 유쾌한 점퍼인지 판단할 수 있는 프로그램을 작성하라. 입력설명 첫 번째 줄에 자연수 N(3 >pre; for (int i=1; i>cur; diff=abs(cur-pre); if (diff>0 && diff 2022. 9. 27.
[C/C++] swea 1220. [S/W 문제해결 기본] 5일차 - Magnetic 문제풀이 이 문제는 개수만 세면 되기 때문에 실제 움직임을 구현해야 하는 지 중요함. 결과적으로 실제 움직임을 구현할 필요는 없음. N과 S극이 한 쌍씩 연결이 되는 지가 중요한데, 즉 하나의 열을 관찰할 때, N이 나오고 그 다음 S가 나오면 교착 상태의 개수가 하나 증가함. 하나의 쌍을 엮기 위해서 벡터 자료형을 사용하였는 데, 예를 들어 S가 나왔을 때 벡터의 마지막 원소가 N이었을 경우 N-S 하나로 엮게 됨. 결과적으로 이 구조가 만족되어야만 교착이 일어나기 때문임. 벡터 v를 가정하였을 때, 벡터 원소를 초기화하는 v.clear();와 마지막 원소를 가리키는 v.back();을 사용하였음. 벡터의 처음과 마지막 원소값이 필요할 때 각각 v.front();와 v.back();을 사용하면 됨. i.. 2022. 9. 25.