본문 바로가기

programmers15

[프로그래머스] Lv.1 모의고사 JAVA 풀이 문제 Lv.1 모의고사 (완전탐색)1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ... 시험은 최대 10,000 문제로 구성문제의 정답은 1, 2, 3, 4, 5중 하나가장 높은 점수를 받은 사람이 여럿일 경우, return하는 값을 오름차순 정렬 [알고리즘 선택 이유]모든 문제의 정답유무를 모두 파악한다 -> 완전탐색 1) 정해진 패턴대로만 풀면 된다 : 어떤거는 풀고 어떤거는 찍는게 아니라 문제 전부 다 찍을.. 2025. 5. 26.
[프로그래머스] Lv.2 게임 맵 최단거리 JAVA 풀이 문제 Lv.2 게임 맵 최단거리 (bfs)맵 크기 : n x m 크기 (n과 m은 각각 1 이상 100 이하의 자연수)현 위치 : 행: 1, 열: 1도착지 : 행: 5, 열: 5이동 가능 : 동서남북 (0은 벽, 1은 갈 수 있는 경로) [과정] 최단거리 → bfs 1. 여러 루트 중 최단 거리는 Math.min? 큐는 알잘딱깔센!경로가 여러개가 나오는데 그렇다면 Math.min을 써야하는 걸까?이경우는 dfs에 해당된다큐는 자동으로!큐 같은 경우는 가장 가까운 경로부터 탐색한다그리고 그 가까운 경로를 큐에 넣고 또 다시 가까운 경로를 탐색한다이는 더 짧은 경로부터 먼저 탐색하기 때문에 목적지에 도달한 경로는 무조건 최단 경로! 2. 큐를 다 돌지 않고 최단거리에서 바로 종료한다!종료 if문을 주.. 2025. 5. 26.
[프로그래머스] Lv.2 타겟 넘버 JAVA 풀이 문제 Lv.2 타겟 넘버 (dfs, bfs)n개의 음이 아닌 정수정수들을 순서를 바꾸지 않고 더하거나 빼서 타겟 넘버를 만들자예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있다-1+1+1+1+1 = 3+1-1+1+1+1 = 3+1+1-1+1+1 = 3+1+1+1-1+1 = 3+1+1+1+1-1 = 3   [과정]  탐색하자 → 브루트포스 / dfs    1. count 계산은 맨 마지막에모든 넘버들을 다사용해서 타겟넘버를 만들어야해서 마지막까지 가고나서 타겟넘버랑 같으면 count++각자 타고 타고 들어가 dfs를 실행하면 count 별도 연산 없이도 차곡차곡 쌓인다!-> 최종적으로 solution메서드에서 그렇게 쌓인 count만 출력해주면 끝  2. for문을 .. 2025. 3. 18.
[프로그래머스] Lv.1 바탕화면 정리 JAVA 풀이 문제 Lv.1 바탕화면 정리 (배열 탐색)  : 컴퓨터 바탕화면은 각 칸이 정사각형인 격자판   컴퓨터 바탕화면의 상태를 나타낸 문자열 배열 = wallpaper   빈칸은 = "."   파일이 있는 칸 = "#"   최소한의 이동거리를 갖는 한 번의 드래그로 모든 파일을 선택해서 한 번에 지우기   드래그는 "점 S에서 점 E로 드래그한다"    "드래그 한 거리" = |rdx - lux| + |rdy - luy|      예)   wallpaper = [".#...", "..#..", "...#."]   S(0, 1)에서 E(3, 4)로 드래그하면 세 개의 파일이 모두 선택   드래그 한 거리 = (3 - 0) + (4 - 1) = 6을 최솟값 1 ≤ wallpaper[i]의 길이 ≤ 50모든 원소의.. 2024. 6. 28.
[프로그래머스] Lv.1 공원 산책 JAVA 풀이 문제 Lv.1 공원 산책 (방향 탐색 시뮬레이션)  :  지나다니는 길 O 장애물 X    ["방향거리", "방향거리"..]     "E 5" = 현재 위치에서 동쪽으로 5칸 이동했다는 의미     공원의 가로 길이가 W, 세로 길이가 H     공원을 나타내는 문자열 배열 park    명령이 담긴 문자열 배열 routes 3 ≤ park[i]의 길이 ≤ 50S : 시작 지점 (1개) O : 이동 가능한 통로X : 장애물1 ≤ routes의 길이 ≤ 50수행할 명령어routes의 원소는 "op n"과 같은 구조 (op는 이동할 방향, n은 이동할 칸의 수)N : 북 이동 / S : 남 이동 / W : 서 이동 / E : 동 이동1 ≤ n ≤ 9  [과정] - 2차원 배열 헷갈리지 말자!! - arr[행.. 2024. 6. 28.
[프로그래머스] Lv.2 택배 배달과 수거하기 JAVA 풀이 문제 Lv.2 택배 배달과 수거하기 : 나열된 n개의 집에 택배를 배달 : 택배 상자 = 물류창고에 보관 ( i번째 집은 물류창고에서 거리 i만큼 떨어져 있다 ) (또한 i번째 집은 j번째 집과 거리 j - i만큼 떨어져 있습니다. (1 ≤ i ≤ j ≤ n) ) : 트럭 허용 범위 = 최대 cap개의 박스 ( 각 집에 배달 및 수거할 때 원하는 개수만큼 가능 ) : 트럭은 재활용 택배 상자들을 실어 각 집에 배달하면서 빈 상자들을 수거해 물류창고에 돌아오는 최소 이동거리 구하기 cap=4 일 때, 최소 거리로 이동하면서 5개의 집에 배달 및 수거 집1 집2 집3 집4 집5 배달 1 0 3 1 2 수거 0 3 0 4 0 집1 집2 집3 집4 집5 배달 / 수거 1/0 0/3 3/0 1/4 2/0 설 명 .. 2024. 2. 5.
[프로그래머스] Lv.2 오픈채팅방 JAVA 풀이 문제 Lv.2 오픈채팅방 : 오픈채팅방에서는 닉네임을 사용 누군가 들어오면 "[닉네임]님이 들어왔습니다." 라고 출력 누군가 나간다면 "[닉네임]님이 나갔습니다." 라고 출력 : 닉네임 변경 방법 채팅방 나가고 새로운 닉네임으로 다시 들어오기 채팅방에서 닉네임 변경하기 닉네임이 변경되면 기존 메시지의 닉네임도 전부 변경 닉네임 중복가능 닉네임을 변경한 기록이 담긴 문자열 배열 = record 모든 기록이 처리된 후 최종 출력 결과를 문자열 배열 행태로 return 한다 : 1 ≤ record ≤ 100,000 모든 유저는 [유저 아이디]로 구분 [유저 아이디] 사용자가 [닉네임]으로 채팅방에 입장 - "Enter [유저 아이디] [닉네임]" (ex. "Enter uid1234 Muzi.. 2023. 11. 23.
[프로그래머스] Lv.2 n진수 게임 JAVA 풀이 문제 Lv.2 n진수 게임 : 여러사람이 둥글게 앉아 숫자를 차례대로 말하기 : 숫자 0부터 시작해서 순서대로 말하고 10 이상부터는 한자리씩의 숫자만 말하기 (예 10을 한명이 아닌 두명이 나눠서 말하는 것) : 이진수로 말하기도 가능 (0, 1, 1|0, 1|1, 1|0|0,,, 한자리수씩 끊어 읽기) : 입력: 진법 n, 구할 숫자 개수 t, 게임에 참가하는 인원 m, 튜브 순서 p 2 ≦ n ≦ 16 / 0 < t ≦ 1000 / 2 ≦ m ≦ 100 / 1 ≦ p ≦ m 1) 0 (= 0), 1 (= 1), 10 (= 2), 11 (= 3), 100 (= 4) 중 2명이 말하는데 그 중 첫번째 순서만 구해라 A: 0 → B: 1 → A: 1 - B: 0 → A: 1 - B: 1 → A: 1 - .. 2023. 11. 15.
[프로그래머스] Lv.3 다단계 칫솔 판매 JAVA 풀이 문제 Lv.3 다단계 칫솔 판매 : 하위 직원이 칫솔 판매하면 10프로는 상사한테 넘긴다 (계속 반복하면서 center까지도 수익금 10% 전달) : 단 더이상 10%로 나눠지지 않는다면 되는 단계까지만 한다 - [enroll] : 모든 판매원의 이름을 담고 있는 배열 - [referral] : enroll배열과 연결된 직속 상사 "-" 표시가 있다면 제일 높은 상사 - [seller] : 판매한 직원 - [amount] : 판매한 칫솔 개수 (seller와 연결지어 보면 된다) 예시) enroll referral income john - 360 mary - 958 edward mary 108 sam edward 0 emily mary 450 jaimie mary 18 tod jaimie 180 youn.. 2023. 11. 2.
[프로그래머스] Lv.2 두 큐 합 같게 만들기 JAVA 풀이 문제 Lv.2 두 큐 합 같게 만들기 : 길이가 같은 두 개의 큐 : 하나의 큐를 골라 원소를 추출(pop)하고 추출된 원소를 다른 큐에 집어넣는(insert) 작업 : 각 큐의 원소 합이 같도록 만드는 최소의 횟수 출력 어떤 방법으로도 같을 수 없다면 -1 출력 : 한 번의 pop과 한 번의 insert를 합쳐서 작업을 1회 수행한 것으로 간주 : 1 ≤ queue1의 길이 = queue2의 길이 ≤ 300,000 1 ≤ queue1의 원소, queue2의 원소 ≤ 109 주의: 언어에 따라 합 계산 과정 중 산술 오버플로우 발생 가능성이 있으므로 long type 고려가 필요 : 입력 예 queue1 = [3, 2, 7, 2] queue2 = [4, 6, 5, 1] 출력 예 result = 2 [코드.. 2023. 10. 10.