오늘은 과제를 제출하고, 알고리즘을 풀었다.
프로그래머스의 캐릭터의 좌표 라는 문제를 계속 붙잡고 있었다.
이틀 전 부터 붙잡고 있던 문제였는데, 어제는 손도 못댔고, 그래도 오늘 시간이 난 김에 다시 붙잡았다.
이틀전에 풀었을 때는 계속 30점 정도만 나와서 왜그런거지? 하면서 계속 코드를 고쳐도 똑같은 결과가 나왔다.
그래서 기본 구조는 따라하되, 아예 처음부터 짜보자 하는 생각으로 초기화 한 후 다시 짰다.
public class CharacterCoordinate {
public int[] solution(String[] keyinput, int[] board) {
int row = board[1] / 2;
int col = board[0] / 2;
int[] answer = {0, 0};
for (String s : keyinput) {
switch (s) {
case "up":
answer[1] += 1;
if (row < answer[1]) {
answer[1] -= 1;
break;
}
break;
case "down":
answer[1] = answer[1] - 1;
if (row < -answer[1]) {
answer[1] = answer[1] + 1;
break;
}
break;
}
}
for (String s : keyinput) {
switch (s) {
case "right":
answer[0] = answer[0] + 1;
if (col < answer[0]) {
answer[0] = answer[0] - 1;
break;
}
break;
case "left":
answer[0] = answer[0] - 1;
if (col < -answer[0]) {
answer[0] = answer[0] + 1;
break;
}
break;
}
}
return answer;
}
}
이것이 오늘 짠 코드이다.
처음에는 if문 후에 break;를 추가하지 않아 계속 틀리게 나왔었다.
이게 왜 안되는거지 하다가 혹시 하고 break;를 추가하니 통과하게 되었다.
비록 정돈된 코드도 아니고, 효율적인 코드도 아니지만, 이렇게 문제 하나 하나 풀어갈때마다 굉장히 성취감을 느낀다.
풀고 난 후에 다른 사람들 코드를 보면, 와 이렇게도 할수 있구나 하는 생각이 계속 든다.
계속 이렇게 실력이 늘어간다는 느낌을 받았으면 좋겠다.