[2020 하반기 한국조폐공사] 코딩 데모 테스트
[java] 직사각형 나머지 한점 좌표 찾기 #Programmers
문제 설명
직사각형을 만드는 데 필요한 4개의 점 중 3개의 좌표가 주어질 때, 나머지 한 점의 좌표를 구하려고 합니다. 점 3개의 좌표가 들어있는 배열 v가 매개변수로 주어질 때, 직사각형을 만드는 데 필요한 나머지 한 점의 좌표를 return 하도록 solution 함수를 완성해주세요. 단, 직사각형의 각 변은 x축, y축에 평행하며, 반드시 직사각형을 만들 수 있는 경우만 입력으로 주어집니다.
제한사항
- v는 세 점의 좌표가 들어있는 2차원 배열입니다.
- v의 각 원소는 점의 좌표를 나타내며, 좌표는 [x축 좌표, y축 좌표] 순으로 주어집니다.
- 좌표값은 1 이상 10억 이하의 자연수입니다.
- 직사각형을 만드는 데 필요한 나머지 한 점의 좌표를 [x축 좌표, y축 좌표] 순으로 담아 return 해주세요.
입출력 예
vresult
[[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 x;
int y;
if(v[0][0]==v[2][0]){
x=v[1][0];
}else if(v[1][0]==v[2][0]){
x=v[0][0];
}else{
x=v[2][0];
}
if(v[0][1]==v[1][1]){
y=v[2][1];
}else if(v[1][1]==v[2][1]){
y=v[0][1];
}else{
y=v[1][1];
}
int[] answer={x,y};
return answer;
}
}
실행 결과
테스트 1 | |
입력값 〉 | [[1, 4], [3, 4], [3, 10]] |
기댓값 〉 | [1, 10] |
실행 결과 〉 | 테스트를 통과하였습니다. |
테스트 2 | |
입력값 〉 | [[1, 1], [2, 2], [1, 2]] |
기댓값 〉 | [2, 1] |
실행 결과 〉 | 테스트를 통과하였습니다. |
테스트 결과 (~˘▾˘)~
2개 중 2개 성공
샘플 테스트 케이스를 통과했다는 의미로, 작성한 코드가 문제의 정답은 아닐 수 있습니다.
(샘플 테스트 케이스는 [테스트 케이스 추가하기] 버튼을 통해 확인하실 수 있습니다.)
[SQL] DB - 프로그래머스
문제 설명
EMPLOYEES 테이블은 자동차 판매 회사에서 일하고 있는 직원의 정보가 담긴 테이블입니다. EMPLOYEES테이블 구조는 다음과 같으며, ID, NAME, SALARY, BRANCH_ID는 각각 직원의 아이디, 이름, 월급, 근무하는 대리점 아이디를 나타냅니다.
NAMETYPENULLABLE
ID | INT | FALSE |
NAME | VARCHAR(N) | FALSE |
SALARY | NUMERIC(N,M) | FALSE |
BRANCH_ID | INT | FALSE |
문제
EMPLOYEES 테이블을 이용해 지점 별 총급여액이 얼마인지 조회하는 SQL문을 작성해주세요.
단, 결과는 지점의 ID순으로 정렬되어야 합니다.
예시
예를 들어 EMPLOYEES 테이블이 다음과 같다면
IDNAMESALARYBRANCH_ID
4603 | Alayna | 180 | 15 |
4651 | Juliet | 300 | 17 |
864 | Holly | 330 | 16 |
2842 | Kyra | 280 | 16 |
15번 지점의 총급여액은 180 (Alayna)
16번 지점의 총급여액은 330 + 280 (Holly, Kyra)
17번 지점의 총급여액은 300 (Juliet)
이므로, SQL을 실행하면 다음과 같이 출력되어야 합니다.
BRANCH_IDTOTAL
15 | 180 |
16 | 610 |
17 | 300 |
-- 코드를 입력하세요
SELECT BRANCH_ID, SUM(SALARY) as TOTAL from EMPLOYEES GROUP BY BRANCH_ID ORDER BY BRANCH_ID ASC;
실행 결과
branch_idtotal
1 | 1780 |
4 | 1110 |
5 | 880 |
6 | 900 |
7 | 1520 |
8 | 880 |
9 | 270 |
10 | 500 |
11 | 390 |
13 | 700 |
14 | 330 |
15 | 600 |
16 | 270 |
17 | 1030 |
18 | 600 |
19 | 270 |
21 | 270 |
22 | 270 |
23 | 570 |
24 | 450 |
25 | 450 |
26 | 870 |
27 | 600 |
30 | 1000 |
31 | 740 |
32 | 390 |
33 | 270 |
35 | 1220 |
36 | 330 |
37 | 1360 |
38 | 370 |
40 | 890 |
41 | 1010 |
42 | 300 |
43 | 300 |
44 | 580 |
45 | 800 |
46 | 990 |
48 | 250 |
49 | 300 |
50 | 1400 |
51 | 720 |
52 | 780 |
53 | 630 |
54 | 500 |
55 | 330 |
57 | 1240 |
59 | 300 |
60 | 950 |
61 | 1360 |
62 | 740 |
63 | 660 |
64 | 1110 |
65 | 540 |
66 | 940 |
한국 조폐공사 코딩 테스트 후기
하지만 그것은 나의 착각이었다. 실제 본 테스트에서는 테스트 예제와는 비교할 수 없을 정도로 어려운 문제들이 나왔다. 문제가 너무 길어 멀미와 현기증으로 헛구역질이 나올뻔했다. 설상가상으로 난독증마저 걸렸는지 눈에 잘 들어오지 않았다. 문제 유출 방지 서약을 했기에 문제를 정확히 알려드릴 순 없지만 대충 아래와 같이 문제가 나왔다.
1번 문제 : 문자열, 조건별 점수 계산, 정렬 혼합 문제
2번 문제 : 트리의 중위 운행법 응용문제
3번 문제 : 경우의 수 문제
4번 문제 : SQL문제
이렇게 나왔다. 우선 SQL문제부터 풀었다. SQL문제는 서브 쿼리를 사용하거나 With 절을 사용하면 해결할 수 있는 문제였는데 나는 With절을 사용해서 그것을 Join 하는 방식으로 문제를 풀었다. 구글링과 자동완성이 없어 쌩 코딩을 했어야 했는데 문법오류가 몇번 나서 정말 식겁했다. SQL문제를 푼 뒤 Java 알고리즘 문제들을 봤는데 1번 2번 3번 순으로 난이도가 올라가는 듯하였다. 제일 쉬운 1번부터 달려들었다. 1번 문제는 어렵지는 않는데 조금 지저분한 문제랄까.... 이것저것 뭐가 많았다. 짧은시간이지만 1주일동안 알고리즘 잡스에서 여러번 문제를 풀어봤기에 망정이지 아니었으면 정말 1번도 못풀뻔했다. 어떻게 1번문제 꾸역꾸역 풀긴 했는데 여기서만 1시간을 넘게 소모했고 1번을 푸니 시간이 30분밖에 남지 않았다. 2번 문제는 트리의 중위 운행법 자체를 구현해본 적이 없기에 풀지 못한다 생각하여 남은 시간 동안 경우의 수 문제만 풀었다. 하지만 시간이 부족하여 정확한 알고리즘을 구현하지 못하였고 시험이 종료되었다.