Notice
Recent Posts
Recent Comments
Link
enginner_s2eojeong
C++[baekjoon] 2309번: 일곱 난쟁이 본문
[1차 코드]
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
int height[9], sum=0;
for(int i=0; i<9; i++){
cin >> height[i];
sum+=height[i];
}
sort(height, height+9);
int i, j, I, J, t=0;
for(int i=0; i<8; i++){
for(int j=i+1; j<9; j++){
if(sum-height[i]-height[j]==100){
t=1;
I=i;
J=j;
break;
}
}
if(t) break;
}
vector<int> arr;
for(int k=0; k<9; k++){
if(k==I || k==J) continue;
else arr.push_back(height[k]);
}
for(int k=0; k<7; k++){
cout << arr[k] << " ";
}
}
[해설]
한국정보올림피아드 초등부 문제였다는데 내가 아직 코린이라 처음엔 틀린 답이 계속 나왔었다... 흑흑
9명의 난쟁이들의 키를 for문에서 입력값으로 받아 height[] 배열에 저장과 동시에 sum에도 누적합을 구해놓았다. 이후 height 배열을 sort를 사용해서 오름차순으로 정렬하고 키의 합이 100이 되는 일곱 난쟁이들의 키만 출력해야하므로 sum에서 특정 2개의 값을 뺐을 때 100이 되고 그때 해당 값들의 index을 각각 I, J에 저장했다. 그러고 해당 index의 값들만 건너뛴 채 나머지 일곱 난쟁이들의 height값만 새로운 동적 배열 arr에 push_back으로 삽입했다.
Q. 근데 처음에는 for문을 돌다가
if(sum-height[i]-height[j]==100)
를 만족하는 i와 j가 자동으로 저장된다고 생각해서 따로 변수 I, J를 선언하지 않았는데 그냥 i, j를 이용하니까 틀린 값이 나왔었다...
그래서 I,J에다가 i,j를 각각 저장해놓고 I,J를 사용해서 출력했다.
[해결]
내가 int i, j로 변수 선언을 해놓고 for문 안에서 새롭게 다시 선언(int i=0; i<8; i++)을 했던 것이 문제였다. 하핳..
사실 약간 헷갈리긴해서 그냥 되도록이면 변수를 다르게 쓰는게 최선의 방법일 듯 하다.
[수정 코드]
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
int height[9], sum=0;
for(int i=0; i<9; i++){
cin >> height[i];
sum+=height[i];
}
sort(height, height+9);
int i, j, I, J, t=0;
for(i=0; i<8; i++){ // 앞서 int i, j로 선언했기 때문에 그냥 i=0, j=0으로 바로 시작
for(j=i+1; j<9; j++){
if(sum-height[i]-height[j]==100){
t=1;
break;
}
}
if(t) break;
}
vector<int> arr;
for(int k=0; k<9; k++){
if(k==i || k==j) continue;
else arr.push_back(height[k]);
}
for(int k=0; k<7; k++){
cout << arr[k] << " ";
}
}
'Algorithm > Baekjoon' 카테고리의 다른 글
C++[baekjoon] 2630번: 색종이 만들기 (0) | 2025.02.10 |
---|---|
C++[baekjoon] 10809번: 알파벳 찾기 (0) | 2024.05.06 |
C++[baekjoon] 2845번: 파티가 끝나고 난 뒤 (0) | 2024.05.05 |
C++[baekjoon] 10867번: 중복 빼고 정렬하기 (0) | 2024.05.04 |
C++ [baekjoon] 1181번: 단어 정렬 (0) | 2024.05.03 |