2017.9.2 - TIL

프로그래머스 알고리즘 문제

문제 1

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

제한사항 N의 범위 : 100,000,000 이하의 자연수 입출력 예 N answer 123 6 987 24 입출력 예 설명 입출력 예 #1 문제의 예시와 같습니다.

입출력 예 #2 9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.

풀이

import java.util.*;

public class Solution {
public int solution(int n) {
  int answer = 0;
      String[] temp = String.valueOf(n).split("");
      for(String str : temp) {
          answer += Integer.parseInt(str);
      }
  return answer;
}
}

문제2

길이가 n인 배열에 1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는지를 확인하려고 합니다. 1부터 n까지 숫자가 중복 없이 한 번씩 들어 있는 경우 true를, 아닌 경우 false를 반환하도록 함수 solution을 완성해주세요.

제한사항 배열의 길이는 10만 이하입니다. 배열의 원소는 10만 이하의 자연수입니다. 입출력 예 arr result [4, 1, 3, 2] true [4, 1, 3] false 입출력 예 설명 입출력 예 #1 입력이 [4, 1, 3, 2]가 주어진 경우, 배열의 길이가 4이므로 배열에는 1부터 4까지 숫자가 모두 들어 있어야 합니다. [4, 1, 3, 2]에는 1부터 4까지의 숫자가 모두 들어 있으므로 true를 반환하면 됩니다.

입출력 예 #2 [4, 1, 3]이 주어진 경우, 배열의 길이가 3이므로 배열에는 1부터 3까지 숫자가 모두 들어 있어야 합니다. [4, 1, 3]에는 2가 없고 4가 있으므로 false를 반환하면 됩니다.

풀이

class Solution {
    public boolean solution(int[] arr) {
           boolean answer = true;
	        int arraySize = arr.length;
	        int[] checkedArr = new int[arraySize];

	        for(int i=0; i < arraySize; i++) {
	        		if(arr[i] > arraySize) {
	        			return false;
	        		}

	        		if(checkedArr[arr[i]-1] == arr[i]) {
	        			return false;
	        		}

	        		checkedArr[arr[i]-1] = arr[i];
	        }

	        return answer;
    }
}

문제3

직사각형을 만드는 데 필요한 4개의 점 중 3개의 좌표가 주어질 때, 나머지 한 점의 좌표를 구하려고 합니다. 점 3개의 좌표가 들어있는 배열 v가 매개변수로 주어질 때, 직사각형을 만드는 데 필요한 나머지 한 점의 좌표를 return 하도록 solution 함수를 완성해주세요. 단, 직사각형의 각 변은 x축, y축에 평행하며, 반드시 직사각형을 만들 수 있는 경우만 입력으로 주어집니다.

제한사항 v는 세 점의 좌표가 들어있는 2차원 배열입니다. v의 각 원소는 점의 좌표를 나타내며, 좌표는 [x축 좌표, y축 좌표] 순으로 주어집니다. 좌표값은 1 이상 10억 이하의 자연수입니다. 직사각형을 만드는 데 필요한 나머지 한 점의 좌표를 [x축 좌표, y축 좌표] 순으로 담아 return 해주세요. 입출력 예 v result [[1, 4], [3, 4], [3, 10]] [1, 10] [[1, 1], [2, 2], [1, 2]] [2, 1] 입출력 예 설명 입출력 예 #1 세 점이 [1, 4], [3, 4], [3, 10] 위치에 있을 때, [1, 10]에 점이 위치하면 직사각형이 됩니다.

입출력 예 #2 세 점이 [1, 1], [2, 2], [1, 2] 위치에 있을 때, [2, 1]에 점이 위치하면 직사각형이 됩니다.

풀이

class Solution {
    public int[] solution(int[][] v) {
                int[] answer = new int[2];
        answer[0] = (v[0][0] == v[1][0] || v[0][0] == v[2][0]) ? (v[0][0] == v[1][0]) ? v[2][0] : v[1][0] : v[0][0];
        answer[1] = (v[0][1] == v[1][1] || v[0][1] == v[2][1]) ? (v[0][1] == v[1][1]) ? v[2][1] : v[1][1] : v[0][1];
        return answer;

    }
}

체스게임 구현

처음부터 다시 구현(TDD 방식으로)

Youtube Kenu님 방송

ELK

  • GCP - 구글 클라우드 플랫폼 스펙 (cpu2, memory 4GB, centOS7)
  • okdevtv.com/mib/elk/elk5

Comments