반응형
개발 공부를 꾸준히 해야하는데... 계속 달렸다가 멈췄다가 무한반복 굴레에 빠졌다!!
얼른 악순환을 끊고 다시 공부해야지!
<2020 카카오 인턴십 코딩테스트 문제 - 키패드 누르기>
class Solution {
// 0부터 9까지 좌표 {y,x}
int[][] numpadPos = {
{3,1}, //0
{0,0}, //1
{0,1}, //2
{0,2}, //3
{1,0}, //4
{1,1}, //5
{1,2}, //6
{2,0}, //7
{2,1}, //8
{2,2} //9
};
//초기 위치
int[] leftPos = {3,0};
int[] rightPos = {3,2};
String hand;
public static void main(String[] args){
}
public String solution(int[] numbers, String hand) {
this.hand = (hand.equals("right")) ? "R" : "L";
String answer = "";
for (int num : numbers) {
String Umji = pushNumber(num);
answer += Umji;
if(Umji.equals("L")) {leftPos = numpadPos[num]; continue;}
if(Umji.equals("R")) {rightPos = numpadPos[num]; continue;}
}
return answer;
}
//num버튼을 누를 때 어디 손을 사용하는가
private String pushNumber(int num) {
if(num==1 || num==4 || num==7) return "L";
if(num==3 || num==6 || num==9) return "R";
// 2,5,8,0 일때 어디 손가락이 가까운가
if(getDist(leftPos, num) > getDist(rightPos, num)) return "R";
if(getDist(leftPos, num) < getDist(rightPos, num)) return "L";
//같으면 손잡이
return this.hand;
}
//해당 위치와 번호 위치의 거리
private int getDist(int[] pos, int num) {
return Math.abs(pos[0]-numpadPos[num][0]) + Math.abs(pos[1]-numpadPos[num][1]);
}
}
사실 클론 코딩이나 다름없다. 왜냐하면 프로그래머스에 있는 답을 보고 그대로 따라적었으니까..!
그래도 클론 코딩하면서 모르는 부분이 있어서 몇 가지 찾아봤다
자바에서 "?" 연산자가 뭐였더라..?
헐.. 알고리즘 공부를 안하니까 연산자 조차 까먹은 것이다!
다시 찾아보니 if/else 관계를 나타낼 때 쓰는 연산자였다
예를 들면 이렇다
import java.util.*;
public class Pratice {
public static void main(String[] args){
int[] array = {1,2,3,5,6};
for(int i = 0; i < array.length; i++){
System.out.println(array[i] + "는" + (array[i] % 2 == 0 ? "짝수" : "홀수"));
// ?를 사용하여 if/else의 문장을 확 줄였다!
}
}
}
출력 결과는
1는홀수
2는짝수
3는홀수
5는홀수
6는짝수
코딩 공부는 꾸준히 하자... 요즘엔 초등학생도 코딩하던데.. 대학생이 되어서야 시작한 나는 계속 달려야 한다
반응형
'프로그래밍 > 알고리즘' 카테고리의 다른 글
[Java] Arrays.sort 사용하여 오름차순 정리 및 int 출력 (0) | 2023.06.27 |
---|---|
[Java] 랜덤한 주사위 수 예측하기 (0) | 2023.06.20 |
백준 2562번 :: 최댓값 - JAVA (0) | 2021.10.01 |
백준 1157번 :: 단어 공부 - JAVA (0) | 2021.10.01 |
백준 1152번 :: 단어의 개수 - JAVA 풀기 (0) | 2021.09.29 |