Junior-Developer
Home
  • Category (316)
    • 문제풀이 (270)
      • 백준oj (201)
      • 프로그래머스 (53)
      • 명품 자바 프로그래밍(개정4판) (11)
      • 구름 (5)
    • 알고리즘 (6)
    • Node.js (2)
    • 체크리스트 (37)
블로그 내 검색
Home

Junior-Developer

1일 1커밋! 1일 1 백준!

  • 문제풀이/백준oj

    [백준OJ] 20366번 같이 눈사람 만들래?

    2021. 9. 27.

    by. Hyeon-Uk

    반응형

    https://www.acmicpc.net/problem/20366

     

    20366번: 같이 눈사람 만들래?

    높이가 (2, 5), (3, 5)로 구성된 눈사람 둘을 만드는 것이 최적의 경우 중 하나이다. |7-8| = 1 다른 경우로는 (2, 9), (5, 5)로 두 눈사람을 만드는 경우가 있다. |11-10| = 1

    www.acmicpc.net


     

     

    풀이

    먼저 모든 눈사람의 크기를 구해준다. 2중for문을 이용하여 모든 조합을 완성 시킬 수 있다.

    그런 뒤, 두 눈사람의 크기차이의 최솟값을 찾으면 되는것이기때문에 눈사람의 크기순으로 정렬을 한 뒤, 자신의 바로 뒤의 눈사람과 비교를 해서 값을 갱신시켜주면 된다. 이때 서로다른 4개의 눈덩이를 골라야하므로, 눈사람 2개를 골랐을때, 중복된 눈덩이가 있는지 확인 후, 없으면 최솟값을 갱신하면 된다.

     

    코드

    #include<iostream>
    #include<algorithm>
    #include<vector>
    #include<cmath>
    #define MAX	2000000001
    using namespace std;
    typedef pair<int, int> pii;
    vector<pair<pii,int>> sum_v;
    int n;
    vector<int> arr;
    
    bool compare(pair<pii, int> a, pair<pii, int> b) {
    	return a.second < b.second;
    }
    
    int main() {
    	cin >> n;
    	arr.resize(n);
    	for (int i = 0; i < n; i++) cin >> arr[i];
    
    	for (int i = 0; i < n; i++) {
    		for (int j = i + 1; j < n; j++) {
    			sum_v.push_back({ {i,j},arr[i] + arr[j] });
    		}
    	}
    	sort(sum_v.begin(), sum_v.end(), compare);
    	int ret = MAX;
    	for (int i = 0; i < sum_v.size()-1; i++) {
    		for (int j = i + 1; j < sum_v.size(); j++) {
    			int i1 = sum_v[i].first.first;
    			int j1 = sum_v[i].first.second;
    			int c1 = sum_v[i].second;
    
    			int i2 = sum_v[j].first.first;
    			int j2 = sum_v[j].first.second;
    			int c2 = sum_v[j].second;
    
    			if (i1 != i2 && i1 != j2 && j1 != i2 && j1 != j2) {
    				ret = min(ret, abs(c1 - c2));
    				break;
    			}
    		}
    	}
    	cout << ret;
    
    	return 0;
    }
    반응형
    저작자표시

    '문제풀이 > 백준oj' 카테고리의 다른 글

    [백준OJ] 11060번 점프 점프  (0) 2021.10.27
    [백준OJ] 4256번 트리  (0) 2021.09.28
    [백준OJ] 11559번 Puyo Puyo  (0) 2021.09.26
    [백준OJ] 10282번 해킹  (0) 2021.09.26
    [백준OJ] 2933번 미네랄  (0) 2021.09.26

    댓글

    관련글

    • [백준OJ] 11060번 점프 점프 2021.10.27
    • [백준OJ] 4256번 트리 2021.09.28
    • [백준OJ] 11559번 Puyo Puyo 2021.09.26
    • [백준OJ] 10282번 해킹 2021.09.26
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
Hyeon-Uk

티스토리툴바