https://www.acmicpc.net/problem/16460
[문제 설명]
간략히 해석하자면,
인터넷 데이팅 서비스를 제공하는 기업에서 프리미엄 사용자에게 누가 나를 좋아했는지 확인하기"와 같은 프리미엄 서비스를 제공하기로 했다고한다.
따라서 프리미엄 사용자의 조건에 맞는 상대를 출력해주는 프로그램을 작성해보자.
[문제 해결]
간단한 구현 문제입니다.
- 이름, 성별, 최대 가능 거리 멤버 변수를 가진 User 클래스를 만든다.
- User 객체를 담을 수 있는 배열을 선언한다. (데이팅 앱 사용자들을 담을 배열)
- 프리미엄 유저의 조건과 상대방의 성별, 거리가 맞으면 ArryList에 상대방 이름을 넣어준다.
- ArrayList를 사전 순으로 정렬한다.
- ArrayList의 크기가 0이면 조건이 맞는 상대가 없으므로 No one yet을 출력
- 조건이 맞는 상대가 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 |