알고리즘 코드카타
select class
from Courses
group by class
having count(student) >= 5
;
import java.util.ArrayList;
import java.util.List;
class Solution {
public int[] solution(String[] park, String[] routes) {
int[] answer = findstart(park);
for (String route : routes) {
char op = route.charAt(0);
int index = Integer.parseInt(route.substring(2));
boolean bool = false;
switch (op) {
case 'N':
bool = movingy(answer[1], answer[0], park, -index);
if (bool) {
answer[0] -= index;
}
break;
case 'S':
bool = movingy(answer[1], answer[0], park, index);
if (bool) {
answer[0] += index;
}
break;
case 'W':
bool = movingx(answer[1], answer[0], park, -index);
if (bool) {
answer[1] -= index;
}
break;
case 'E':
bool = movingx(answer[1], answer[0], park, index);
if (bool) {
answer[1] += index;
}
break;
default:
break;
}
}
return answer;
}
public int[] findstart(String[] park){
int[] answer = {0,0};
for (int i = 0; i < park.length; i++) {
int index = park[i].indexOf("S");
if (index != -1) {
answer[0] = i;
answer[1] = index;
}
}
return answer;
}
public boolean movingx(int x, int y, String[] park, int d) {
if (x + d < 0 || x + d >= park[0].length()) {
return false;
}
List<Integer> indexl = new ArrayList<>();
char[] chars = park[y].toCharArray();
for (int i = 0; i<chars.length; i++){
if (chars[i] == 'X'){
indexl.add(i);
}
}
if (indexl.size() == 0) {
return true;
}else {
int sum = 0;
for (Integer index : indexl) {
if (!check(x, d, index)) {
sum++;
}
}
if (sum == 0) {
return true;
}
}
return false;
}
public boolean movingy(int x, int y, String[] park, int d) {
if (y + d < 0 || y + d >= park.length) {
return false;
}
StringBuilder yindex = new StringBuilder();
List<Integer> indexl = new ArrayList<>();
for (int i = 0; i < park.length; i++) {
yindex.append(park[i].charAt(x));
if (park[i].charAt(x) == 'X') {
indexl.add(i);
}
}
if (indexl.size() == 0) {
return true;
}else {
int sum = 0;
for (Integer index : indexl) {
if (!check(y, d, index)) {
sum++;
}
}
if (sum == 0) {
return true;
}
}
return false;
}
public boolean check(int target, int d, int index){
if (d >= 0) {
if (index > target + d || index < target) {
return true;
}
} else {
if (index > target || index < target + d) {
return true;
}
}
return false;
}
}