Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 에러
- 방법
- 넥사크로
- db
- jquery
- JPA
- 자바
- 오라클
- Eclipse
- kotlin
- error
- Spring
- 함수
- IntelliJ
- JavaScript
- 생성
- GitHub
- 프로그래머스
- aws
- 시큐리티
- Vue
- oracle
- 코틀린
- Java
- Git
- 알고리즘
- 쿼리
- mybatis
- 스프링
- Security
Archives
- Today
- Total
송민준의 개발노트
[프로그래머스] 단체사진 찍기 본문
https://programmers.co.kr/learn/courses/30/lessons/1835
모든 경우의 수를 체크해야 하는 문제.
결론은 dfs로 접근해서 풀면 된다.
잠깐 for문 8번 중첩할까도 생각했다.... 풀고 다른 사람풀이 보니 진짜 실행한 사람이 있다...ㅋㅋ
class Solution {
private String[] friends = {"A", "C", "F", "J", "M", "N", "R", "T"};
private int answer = 0;
public int solution(int n, String[] data) {
boolean[] visited = new boolean[8];
StringBuilder sb = new StringBuilder("");
dfs(data, visited, sb);
return answer;
}
public void dfs(String[] data, boolean[] visited, StringBuilder sb) {
if(sb.length() == 8) {
if(check(data, sb)) {
answer += 1;
}
return;
}
// 모든 케이스 탐색
for(int i = 0; i < friends.length; i++) {
// 탐색 안한 곳인 경우
if(!visited[i]) {
visited[i] = true;
StringBuilder nsb = new StringBuilder(sb);
nsb.append(friends[i]);
dfs(data, visited, nsb);
visited[i] = false;
}
}
}
// 케이스 일치 확인
public boolean check(String[] data, StringBuilder sb) {
for(String value : data) {
int targetIndex = sb.indexOf(String.valueOf(value.charAt(0)));
int compareIndex = sb.indexOf(String.valueOf(value.charAt(2)));
String co = String.valueOf(value.charAt(3));
String coValue = String.valueOf(value.charAt(4));
if(co.equals("=")) {
if(!(Math.abs(targetIndex - compareIndex) - 1 == Integer.parseInt(coValue))) return false;
} else if(co.equals(">")) {
if(!(Math.abs(targetIndex - compareIndex) - 1 > Integer.parseInt(coValue))) return false;
} else if(co.equals("<")) {
if(!(Math.abs(targetIndex - compareIndex) - 1 < Integer.parseInt(coValue))) return false;
}
}
return true;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 짝지어 제거하기 (0) | 2022.05.08 |
---|---|
[프로그래머스] 소수 만들기 (0) | 2022.05.02 |
[프로그래머스] 카카오프렌즈 컬러링북 (0) | 2022.04.30 |
[프로그래머스] 오픈채팅방 (0) | 2022.04.28 |
[프로그래머스] 더 맵게 (0) | 2022.04.25 |