2일차 _ 2
프로그래머스
문제 : 단체사진 찍기
2일차 백준 문제가 너무 쉬워서 프로그래머스 문제도 풀었다.
1,168명이 푼 문제로 사람들이 많이 안푼것 같아서 시도했다.
50분 정도 걸려서 다 풀었다...
문제 설명은 아래 링크
https://programmers.co.kr/learn/courses/30/lessons/1835?language=java
풀이
사용언어: java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Solution {
private static int count = 0;
private static String[] conditions;
public static int solution(int n, String[] data) {
if (n == 0) return 0;
count = 0;
conditions = data;
List<String> friendList = new ArrayList<>(Arrays.asList("A", "C", "F", "J", "M", "N", "R", "T"));
List<String> result = new ArrayList<>();
recursion(friendList, result, friendList.size(), friendList.size());
return count;
}
private static void recursion(List<String> arr, List<String> result, int size, int repeat) {
if (repeat == 0) {
if (checkCondition(result)) count++;
return;
}
for (int i = 0; i < size; i++) {
result.add(arr.remove(i));
recursion(arr, result, size-1, repeat-1);
arr.add(i, result.remove(result.size() - 1));
}
}
private static boolean checkCondition(List<String> list) {
String sequence = arrayToString(list);
for (int i = 0; i < conditions.length; i++) {
String friendOne = conditions[i].substring(0, 1); // 조건 제시한 프렌즈
String friendTwo = conditions[i].substring(2, 3); // 상대방
String condition = conditions[i].substring(3, 4); // 조건
int distance = Integer.parseInt(conditions[i].substring(4)); // 거리
int firstIndex = sequence.indexOf(friendOne);
int secondIndex = sequence.indexOf(friendTwo);
if (condition.equals("=")) {// 같음
if ( (Math.abs(firstIndex - secondIndex) - 1) != distance) {
return false;
}
}
if (condition.equals("<")) {// 미만
if (!((Math.abs(firstIndex - secondIndex) - 1) < distance)) {
return false;
}
}
if (condition.equals(">")) {// 초과
if (!((Math.abs(firstIndex - secondIndex) - 1) > distance)) {
return false;
}
}
}
return true;
}
private static String arrayToString(List<String> arr) {
StringBuilder sb = new StringBuilder();
for (String s : arr) {
sb.append(s);
}
return sb.toString();
}
}
Author And Source
이 문제에 관하여(2일차 _ 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@myhouse34/2일차-2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)