[Baekjoon/C++] 3273번: 두 수의 합

2024. 1. 24. 00:59· Koala - 13기/코딩테스트 준비 스터디
목차
  1. 해결
  2. 정답
 
문제

n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i < j ≤ n)을 만족하는 (ai, aj)쌍의 수를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 수열의 크기 n이 주어진다. 다음 줄에는 수열에 포함되는 수가 주어진다. 셋째 줄에는 x가 주어진다. (1 ≤ n ≤ 100000, 1 ≤ x ≤ 2000000)

출력

문제의 조건을 만족하는 쌍의 개수를 출력한다.

예제 입력 1 

9
5 12 7 10 9 1 2 3 11
13

예제 출력 1 

3

해결

먼저 수열의 크기와 수열, 합을 입력 받고, 수열을 오름차순으로 정렬한다.

투포인터를 이용해 원하는 합을 찾는다.

(두 수의 합이 x와 같으면 count를 증가시키고 시작점을 오른쪽으로 한 칸 이동한다. 두 수의 합이 x보다 크면 끝점을 왼쪽으로 한 칸 이동한다. 두 수의 합이 x보다 작으면 시작점을 오른쪽으로 한 칸 이동한다. 이 과정을 시작점이 끝점보다 작을 때 반복하며, 최종적으로 찾은 쌍의 개수를 출력한다.)


정답

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
  
    int n;
    cin >> n;
    vector<int> arr(n);
    for (int i = 0; i < n; i++)
        cin >> arr[i];
    int x;
    cin >> x;

    sort(arr.begin(), arr.end());

    int count = 0;
    int start = 0;
    int end = n - 1;

    while (start < end) {
        int temp = arr[start] + arr[end];
        if (temp == x) {
            count++;
            start++;
        } else if (temp > x) {
            end--;
        } else {
            start++;
        }
    }

    cout << count;

    return 0;
}

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

저작자표시 (새창열림)

'Koala - 13기 > 코딩테스트 준비 스터디' 카테고리의 다른 글

[백준/C++] 국회의원 선거  (0) 2024.01.25
[백준/Python] 18405번 경쟁적 전염  (0) 2024.01.25
[백준/Python] 11726번 : 2xn 타일링  (0) 2024.01.22
[백준/Python] 14916번: 거스름돈  (0) 2024.01.22
[백준/Python] 14495번: 피보나치 비스무리한 수열  (0) 2024.01.21
  1. 해결
  2. 정답
'Koala - 13기/코딩테스트 준비 스터디' 카테고리의 다른 글
  • [백준/C++] 국회의원 선거
  • [백준/Python] 18405번 경쟁적 전염
  • [백준/Python] 11726번 : 2xn 타일링
  • [백준/Python] 14916번: 거스름돈
KauKoala
KauKoala
항공대 알고리즘 동아리 Koala 🥰
KauKoala
Koala
KauKoala
전체
오늘
어제
  • 분류 전체보기 (1888)
    • 공지 게시판 (10)
    • 정보 게시판 (8)
    • Codeforce (15)
    • acm-icpc (6)
    • Koala - 1기 (16)
    • Koala - 2기 (111)
      • Programming Contest (1)
      • A반 (20)
      • B반 (39)
      • C반 (22)
      • 기초 강의 (18)
    • Koala - 3기 (10)
      • 기초 스터디 (7)
    • Koala - 4기 (67)
    • Koala - 5기 (144)
      • 기초 알고리즘 스터디 (75)
      • 코딩테스트 준비 스터디 (68)
    • Koala - 6기 (102)
      • 기초 알고리즘 스터디 (75)
      • 코딩테스트 준비 스터디 (25)
      • 모의 테스트 스터디 (1)
    • Koala - 7기 (167)
      • 기초 알고리즘 스터디 (97)
      • 코딩테스트 준비 스터디 (68)
      • 모의 테스트 스터디 (1)
    • Koala - 8기 (44)
      • 기초 알고리즘 스터디 (32)
      • 코딩테스트 준비 스터디 (10)
      • 코드포스 버츄얼 스터디 (0)
      • 프로그래머스 LV2 스터디 (0)
    • Koala - 9기 (205)
      • 기초 알고리즘 스터디 (138)
      • 코딩테스트 준비 스터디 (64)
      • 모의테스트 준비 스터디 (1)
    • Koala - 10기 (117)
      • 기초 알고리즘 스터디 (30)
      • 코딩테스트 준비 스터디 (86)
      • 모의테스트 준비 스터디 (1)
    • Koala - 11기 (151)
      • 기초 알고리즘 스터디 (46)
      • 코딩테스트 준비 스터디 (104)
      • 모의테스트 준비 스터디 (1)
    • Koala - 12기 (86)
      • 기초 알고리즘 스터디 (31)
      • 코딩테스트 준비 스터디 (55)
    • Koala - 13기 (119)
      • 기초 알고리즘 스터디 (52)
      • 코딩테스트 준비 스터디 (67)
    • Koala - 14기 (116)
      • 기초 알고리즘 스터디 (39)
      • 코딩테스트 준비 스터디 (77)
    • Koala - 15기 (138)
      • 기초 알고리즘 스터디 (73)
      • 코딩테스트 준비 스터디 (65)
    • Koala - 16기 (47)
      • 코딩테스트 기초 스터디 (16)
      • 코딩테스트 심화 스터디 (31)
    • Koala - 17기 (62)
      • 코딩테스트 기초 스터디 (15)
      • 코딩테스트 심화 스터디 (47)
    • Koala - 18기 (31)
      • 코딩테스트 기초 스터디 (11)
      • 코딩테스트 심화 스터디 (20)
    • Koala - 19기 (42)
      • 코딩테스트 기초 스터디 (7)
      • 코딩테스트 심화 스터디 (35)
    • Koala - 20기 (0)
      • 코딩테스트 기초 스터디 (0)
      • 코딩테스트 심화 스터디 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • 🐨항공대 알고리즘 학회 Koala 3기 모집
  • 🐨항공대 알고리즘 학회 Koala 2기 모집
  • 소모임 소개

인기 글

태그

  • BFS
  • 백트래킹
  • 백준
  • 파이썬
  • dp
  • C++
  • BOJ
  • dfs

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.3.0
KauKoala
[Baekjoon/C++] 3273번: 두 수의 합
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.