팡세영
Log sey
팡세영
전체 방문자
오늘
어제
  • 분류 전체보기 (73)
    • PS (45)
      • programmers (13)
      • 백준 (29)
    • Android (16)
    • Daily (0)
    • Kotlin (6)
    • Design Pattern (1)
    • Java (1)
    • Flutter (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 코틀린
  • 프로그래머스
  • DFS
  • mvvm
  • compose
  • TestCode
  • 이분탐색
  • programmers #프로그래머스
  • 실버
  • ArcitecturePattern
  • 백준
  • 골드
  • 의존성 주입
  • flutter
  • BFS
  • Android
  • 구현
  • 안드로이드
  • 문자열
  • binding
  • CustomView
  • Kotlin
  • java
  • 하단네비게이션바
  • 완전탐색
  • 자바
  • LEVEL2
  • programmers
  • 해쉬맵
  • 정렬

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
팡세영

Log sey

[백준] Cupid (16460) - Java
PS/백준

[백준] Cupid (16460) - Java

2022. 7. 7. 02:03

 

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

 

16460번: Cupid

The name of a premium user, his or her gender preference, and maximum geographical distance are given, separated by a space, in the first line. The maximum geographical distance is an integer.  The gender preference is one of 'F', 'FM', 'M', and 'MF', re

www.acmicpc.net

 


[문제 설명]

간략히 해석하자면, 

 

인터넷 데이팅 서비스를 제공하는 기업에서 프리미엄 사용자에게 누가 나를 좋아했는지 확인하기"와 같은 프리미엄 서비스를 제공하기로 했다고한다.

 

따라서 프리미엄 사용자의 조건에 맞는 상대를 출력해주는 프로그램을 작성해보자.

 

[문제 해결] 

간단한 구현 문제입니다.

  1. 이름, 성별, 최대 가능 거리 멤버 변수를 가진 User 클래스를 만든다.
  2. User 객체를 담을 수 있는 배열을 선언한다. (데이팅 앱 사용자들을 담을 배열)
  3. 프리미엄 유저의 조건과 상대방의 성별, 거리가 맞으면 ArryList에 상대방 이름을 넣어준다.
  4. ArrayList를 사전 순으로 정렬한다.
  5. ArrayList의 크기가 0이면 조건이 맞는 상대가 없으므로 No one yet을 출력 
  6. 조건이 맞는 상대가 1명 이상일 경우 ArrayList에서 꺼내주면서 상대방 이름을 출력한다. 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;

class User{
    String name;
    String gender;
    int distance;

    public User(String name, String gender, int distance){
        this.name = name;
        this.gender = gender;
        this.distance = distance;
    }
}

public class Main {

    public static void main(String args[]) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());

        User premiumUser = new User(st.nextToken(),st.nextToken(), Integer.parseInt(st.nextToken()));
        int peopleNum = Integer.parseInt(br.readLine());
        User userArr[] = new User[peopleNum];

        for(int i=0; i<peopleNum; i++){
            st = new StringTokenizer(br.readLine());
            userArr[i] = new User(st.nextToken(), st.nextToken(), Integer.parseInt(st.nextToken()));
        }

        ArrayList<String> ans = new ArrayList<>();
        for(var target : userArr){
            if(checkGender(premiumUser.gender, target.gender) && premiumUser.distance >= target.distance) 
                ans.add(target.name);
        }

        Collections.sort(ans);

        if(ans.size() == 0) System.out.println("No one yet");
        else for(var name : ans) System.out.println(name);

    }

    public static boolean checkGender(String premiumUserGender, String targetGender){
        if(premiumUserGender.equals("FM") || premiumUserGender.equals("MF")) return true;
        else if(premiumUserGender.equals(targetGender)) return true;
        else return false;
    }




}

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

[백준] Java vs C++ 3613 (Java)  (2) 2022.07.12
[백준] 추월 (2002) - Java  (0) 2022.07.08
[백준] 노드 사이 거리 (1240) - Java, bfs  (0) 2022.07.05
[백준 17264] I AM IRONMAN  (0) 2022.06.28
백준 촌수 계산(2644)  (0) 2022.06.27
    'PS/백준' 카테고리의 다른 글
    • [백준] Java vs C++ 3613 (Java)
    • [백준] 추월 (2002) - Java
    • [백준] 노드 사이 거리 (1240) - Java, bfs
    • [백준 17264] I AM IRONMAN
    팡세영
    팡세영
    Android, CS, PS

    티스토리툴바