티스토리 뷰

 

https://school.programmers.co.kr/learn/courses/11132/lessons/71150

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

## 문제

 

 

## 코드

package cos_pro_java;

public class Programmers_3_up_and_down {
	 public int solution(int K, int[] numbers, String[] UpDown) {
	        int left = 1;
	        int right = K;
	        for(int i = 0; i < numbers.length; i++) {
	            int num = numbers[i];
	            if(UpDown[i].equals("UP"))
	                left = 	(left<=num? num + 1:left) ;
	            else if(UpDown[i].equals("DOWN"))
	                right = (right>=num? num - 1:right)	;
	            else if(UpDown[i].equals("RIGHT"))
	                return 1;
	            System.out.println(left + ", "+right);
	        }
	        return 	right - left + 1;
	    }
	    // 아래는 테스트케이스 출력을 해보기 위한 main 메소드입니다.
	    public static void main(String[] args) {
	    	Programmers_3_up_and_down sol = new Programmers_3_up_and_down();
	        int K1 = 10;
	        int[] numbers1 = {4, 9, 6};
	        String[] UpDown1 = {new String("UP"), new String("DOWN"), new String("UP")};
	        int ret1 = sol.solution(K1, numbers1, UpDown1);

	        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
	        System.out.println("solution 메소드의 반환 값은 " + ret1 + " 입니다.");

	        int K2 = 10;
	        int[] numbers2 = {2, 1, 6};
	        String[] UpDown2 = {new String("UP"), new String("UP"), new String("DOWN")};
	        int ret2 = sol.solution(K2, numbers2, UpDown2);

	        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
	        System.out.println("solution 메소드의 반환 값은 " + ret2 + " 입니다.");

	        int K3 = 100;
	        int[] numbers3 = {97, 98};
	        String[] UpDown3 = {new String("UP"), new String("RIGHT")};
	        int ret3 = sol.solution(K3, numbers3, UpDown3);

	        // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
	        System.out.println("solution 메소드의 반환 값은 " + ret3 + " 입니다.");
	    }
}

 

## 주의 할 점

 

3항 연산자로 left, right의 위치 보다 적거나 많은 값이 들어왔을 때만 입력하기!