Banner

My Tech Blog (코딩테스트)

오늘의 명언
📑 문제설명2022년 5월에 예약한 환자 수를진료과 코드 별로 조회하기컬럼명 별칭 - '진료과코드', '5월예약건수'진료과별 예약한 환자수, 진료과 코드 순서로 오름차순 ⭐정답코드-- 코드를 입력하세요SELECT mcdp_cd AS "진료과코드", COUNT(pt_no) AS "5월예약건수"FROM appointmentWHERE DATE_FORMAT(apnt_ymd, '%Y-%m') = '2022-05'GROUP BY mcdp_cdORDER BY 2 ASC, 1 ASC; 1. 별칭 SELECT절에 별칭(alias) 쓸 때 MySQL에서 컬럼 별칭은 작은따옴표(' ')가 아니라 큰따옴표(" ")나 백틱( ` `)을 쓴다. 작은따옴표는 문자열 리터럴을 감쌀 때 쓰니까 컬럼 별칭 감쌀 때는 혼동되지 않게 큰..
📑 1. 문제설명1 ~ n의 번호가 있는 택배 상자가 창고에 있습니다. 당신은 택배 상자들을 다음과 같이 정리했습니다. 왼쪽에서 오른쪽으로 가면서 1번 상자부터 번호 순서대로 택배 상자를 한 개씩 놓습니다. 가로로 택배 상자를 w개 놓았다면 이번에는 오른쪽에서 왼쪽으로 가면서 그 위층에 택배 상자를 한 개씩 놓습니다. 그 층에 상자를 w개 놓아 가장 왼쪽으로 돌아왔다면 또다시 왼쪽에서 오른쪽으로 가면서 그 위층에 상자를 놓습니다. 이러한 방식으로 n개의 택배 상자를 모두 놓을 때까지 한 층에 w개씩 상자를 쌓습니다.위 그림은 w = 6일 때 택배 상자 22개를 쌓은 예시입니다. 다음 날 손님은 자신의 택배를 찾으러 창고에 왔습니다. 당신은 손님이 자신의 택배 상자 번호를 말하면 해당 택배 상자를 꺼내줍..
📑 1. 문제설명https://school.programmers.co.kr/learn/courses/30/lessons/81303[본 문제는 정확성과 효율성 테스트 각각 점수가 있는 문제입니다.] 업무용 소프트웨어를 개발하는 니니즈웍스의 인턴인 앙몬드는 명령어 기반으로 표의 행을 선택, 삭제, 복구하는 프로그램을 작성하는 과제를 맡았습니다. 세부 요구 사항은 다음과 같습니다.위 그림에서 파란색으로 칠해진 칸은 현재 선택된 행을 나타냅니다. 단, 한 번에 한 행만 선택할 수 있으며, 표의 범위(0행 ~ 마지막 행)를 벗어날 수 없습니다. 이때, 다음과 같은 명령어를 이용하여 표를 편집합니다"U X": 현재 선택된 행에서 X칸 위에 있는 행을 선택합니다."D X": 현재 선택된 행에서 X칸 아래에 있는 행..
📑 1. 문제설명방문길이 https://school.programmers.co.kr/learn/courses/30/lessons/49994게임 캐릭터를 4가지 명령어를 통해 움직이려 합니다. 명령어는 다음과 같습니다.U: 위쪽으로 한 칸 가기D: 아래쪽으로 한 칸 가기R: 오른쪽으로 한 칸 가기L: 왼쪽으로 한 칸 가기캐릭터는 좌표평면의 (0, 0) 위치에서 시작합니다. 좌표평면의 경계는 왼쪽 위(-5, 5), 왼쪽 아래(-5, -5), 오른쪽 위(5, 5), 오른쪽 아래(5, -5)로 이루어져 있습니다. 예를 들어, "ULURRDLLU"로 명령했다면. 1번 명령어부터 7번 명령어까지 다음과 같이 움직입니다. 8번 명령어부터 9번 명령어까지 다음과 같이 움직입니다. 이때, 우리는 게임 캐릭터가 지나간 ..
📑 1. 문제설명https://school.programmers.co.kr/learn/courses/30/lessons/42889 입력:전체 스테이지의 개수 N게임을 이용하는 사용자가 현재 멈춰있는 스테이지의 번호가 담긴 배열 stages실패율이 높은 스테이지부터 내림차순으로 스테이지의 번호가 담겨있는 배열을 return 하도록 solution 함수를 완성하라.💡 2. 풀이과정실패율은 다음과 같이 정의한다.스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 / 스테이지에 도달한 플레이어 수 각 사용자들은 현재 머물러 있는 stage 정보를 가지고 있다.stage = N인 사용자는 현재 N번 스테이지에 도전 중이며 아직 클리어하지 못한 상태를 의미한다. 문제에서 주어진 입출력 예1 데이터를 통해 ..
📑 1. 문제설명💡 2. 풀이과정queries를 순회하면서 반복문을 통해 queries[i]를 하나씩 꺼내서 각각 s, e, k 값을 분리해서 저장한다.s ≤ j ≤ e 범위 안에서 반복문을 돌며 arr[j] 값을 확인하면서 arr[j] > k인 값만 골라낸다 (조건 필터링)여기서부터는 조건을 만족하는 값 중 가장 작은 값을 고르는 과정이다. 3-1. 비교용 변수 min을 Integer.MAX_VALUE로 초기화한다.3-2. arr[j] > k && arr[j] 3-3. 조건을 만족한 적이 있는지를 체크하기 위해 found 플래그 사용한다.반복이 끝난 뒤, found가 true면 min값을 결과 배열에 저장한다. 만약 조건을 만족한 값이 없다면 -1을 저장한다. 👨‍💻 3. 정답코드class So..
📑 1. 문제설명💡 2. 풀이과정이건 이중 for문 + Set + 정렬 문제이다.입출력예에서 중복값이 없기 때문에 중복을 허용하지 않는 자료형 해시셋을 사용해서 푼다. 1. 배열에서 이중 포문을 사용해서 두 수를 선택하는 모든 경우의 수를 구한다.2. 위에서 구한 수를 더해서 해시셋에 추가해서 중복제거한다.3. 해시셋 값을 오름차순 정렬한다.4. int[] 형태의 배열로 변환해서 반환한다. 이 때 stream을 사용한다.👨‍💻 3. 정답코드처음에 이중 for문의 범위를 잘못 잡았는데, 바깥 for문의 i 범위를 `i 이렇게 하면 노노❌ 왜냐하면 바깥 for문에서 i 이 경우 j 결국 바깥 for문 마지막 반복 (i == 마지막 인덱스)에서는 j가 더할 상대가 없기 때문에쓸모 없는 반복이 한 번 일..
📑 1. 문제설명💡 2. 풀이과정이렇게 반환할 문자열의 길이가 고정되지 않은 경우는 배열을 못 쓰기 때문에StringBuilder을 써주는게 좋다. StringBuilder을 쓰면 마지막에 문자열을 반환할 때 toString() 으로 전환해야 한다.code를 인덱스에 따라 한 글자씩 돌면서 각 문자(char)이 1인지 아닌지 확인한다.1이면 mode 전환1이 아니면i) mode가 0일 때는 인덱스가 짝수면 해당 문자를 ret에 append함ii) mode가 1일 때는 인덱스가 홀수면 해당 문자를 ret에 append함ret.length()가 0이면 "EMPTY" 출력, 아니면 ret.toString() 출력👨‍💻 3. 정답코드class Solution { public String soluti..
상단으로