ahlight
개발 저장소
ahlight
전체 방문자
오늘
어제
  • 분류 전체보기 (197)
    • Java (7)
    • Spring (5)
    • JPA (2)
    • JavaScript (0)
    • Computer Science (12)
      • 디자인패턴, 프로그래밍 패러다임 (1)
      • 네트워크 (4)
      • 운영체제 (4)
      • 데이터베이스 (3)
      • 자료구조 (0)
    • 알고리즘 (1)
    • 프로그래머스 (13)
    • 백준 (94)
    • 서평 (3)
    • 회고 (1)
    • TIL (58)
    • 기타 (1)

블로그 메뉴

  • 홈

공지사항

인기 글

태그

  • 라즈베리파이4 #홈서버 #포트포워딩 #dhcp
  • Java
  • 클린코드
  • 넥스트스텝
  • TDD

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
ahlight

개발 저장소

백준

백준 1253번 자바 ☆

2022. 12. 30. 20:02

문제

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

 

1253번: 좋다

첫째 줄에는 수의 개수 N(1 ≤ N ≤ 2,000), 두 번째 줄에는 i번째 수를 나타내는 Ai가 N개 주어진다. (|Ai| ≤ 1,000,000,000, Ai는 정수)

www.acmicpc.net

import java.util.Arrays;
import java.util.Scanner;

public class Main1253 {

	public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		int[] arr = new int [N];
		boolean[] visited = new boolean[N];
		
		for (int i=0; i<N; i++) {
			arr[i] = sc.nextInt();
		}
		
		Arrays.sort(arr);
		
		int cnt = 0;
		
		for (int i = 0; i<N; i++) {
			int si = 0;
			int ei = N-1;
			while (si < ei) {
				if (arr[si] + arr[ei] == arr[i]) {
					if (si != i && ei != i) {
						cnt++;
						break;
					} else if (si == i) {
						si++;
					} else {
						ei--;
					}
					
				} else if (arr[si] + arr[ei] < arr[i]) {
					si++;
				} else {
					ei--;
				}
			}
			
		}
		
		System.out.println(cnt);
	}
}

1. 문제이해를 잘못해서 양수만 생각하고 로직을 구성했다. 그렇게 헤매다 결국 절대값인것을 확인하고 다시 로직을 짰다.

 

2. 투포인터를 활용한다. 다만 음수가 있기때문에 si(startIndex), ei(endIndex)의 값이 i와 같을 수 있는 반례를 예상해야 한다. 그 외엔 딱히 어려운 부분은 없다.

 

정리 : 골드치고 어려운 문제는 아니지만 위에 설명한 반례를 생각 못한다면 쉽게 풀 수 없었을 문제다. 항상 문제를 꼼꼼히 읽는 습관을 길들이자.

'백준' 카테고리의 다른 글

백준 11003번 자바 ☆  (0) 2023.01.02
백준 12891번 자바  (0) 2022.12.31
백준 1940번 자바  (0) 2022.12.29
백준 2018번 자바  (2) 2022.12.29
백준 10986번 자바 ☆  (0) 2022.12.28
    '백준' 카테고리의 다른 글
    • 백준 11003번 자바 ☆
    • 백준 12891번 자바
    • 백준 1940번 자바
    • 백준 2018번 자바
    ahlight
    ahlight

    티스토리툴바