728x90

코딩테스트 18

[백준 14503] 로봇 청소기 자바 - 시뮬레이션

문제 14503번: 로봇 청소기 첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$ 둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽 www.acmicpc.net 메모리 11836KB 시간 88MS 접근방식 시뮬레이션 문제이기 때문에 조건을 꼼꼼히 읽으면서 적용시켰다. 그리고 방향이 중요하기 때문에 dx,dy를 조건대로 만들어주고 90도 회전, 후진할 때 방향 계산을 해주는 거에 주의했다. 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; impor..

코딩테스트 2023.10.16

[백준 17281] 야구 자바 - 완전탐색

문제 17281번: ⚾ ⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종 www.acmicpc.net 접근방식 야구를 잘 몰라서 많이 헤맸던.. 순열 구할 때 DFS로 1번 선수가 4번 타자가 되는 경우를 고정해서 구했고 그 후에 점수 구하는 방법은 문제에서 설명한 내용들을 기준으로 구현해 줬다. 처음에 베이스 밟는 걸 큐로 만들어서 관리하려고 했는데 시간초과 나서 배열로 바꿨다. 3루 쪽으로 당겨주는 로직을 잘 짜둬서 1,2,3번 나누지 않고 한 번에 해결이 가능했다. public static int Game() { int idx = 0; int score = ..

코딩테스트 2023.10.13

[백준 14719] 빗물 자바 구현

문제 14719번: 빗물 첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치 www.acmicpc.net 접근방식 빗물을 가득 채운 후에 왼쪽 위, 오른쪽 위에서부터 탐색하면서 빗물을 빼주는 식으로 생각했다. 로직 자체가 간단해서 아이디어만 잘 떠올리면 쉽게 풀 수 있을듯하다 풀이 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedR..

코딩테스트 2023.10.12

[백준 17265] 나의 인생에는 수학과 함께 자바 - DFS

문제 17265번: 나의 인생에는 수학과 함께 세현이의 인생의 목표는 1분 1초 모든 순간 수학과 함께 살아가는 것이다. 그렇기 때문에 매일 수학을 생각하면서 살아가고 있다. 세현이는 밥을 먹을 때도 쌀알의 수를 계산하여 칼로리를 바로 www.acmicpc.net 메모리 11532KB 시간 80MS 접근방식 DFS로 내려가면서 현재가 연산자인 경우 다음의 값을 연산하는 식으로 진행했다. 완전탐색이고 결과값이 음수가 나올 수 있어서 max값을 0이 아닌 Integer.MAX_INTEGER로 초기화하는 게 중요했다. public static void DFS(int x,int y,int sum) { if(x == N-1 && y == N-1) { min = Math.min(min, sum); max = Mat..

코딩테스트 2023.10.10

[백준 2935] 소음 자바 문자열

문제 2935번: 소음 수업 시간에 떠드는 두 학생이 있다. 두 학생은 수업에 집중하는 대신에 글로벌 경제 위기에 대해서 토론하고 있었다. 토론이 점점 과열되면서 두 학생은 목소리를 높였고, 결국 선생님은 크게 www.acmicpc.net 수업 시간에 떠드는 두 학생이 있다. 두 학생은 수업에 집중하는 대신에 글로벌 경제 위기에 대해서 토론하고 있었다. 토론이 점점 과열되면서 두 학생은 목소리를 높였고, 결국 선생님은 크게 분노하였다. 이렇게 학생들이 수업 시간에 떠드는 문제는 어떻게 해결해야 할까? 얼마전에 초등학교 선생님으로 취직한 상근이는 이 문제를 수학 문제로 해결한다. 학생들을 진정시키기 위해 칠판에 수학 문제를 써주고, 아이들에게 조용히 이 문제를 풀게 한다. 학생들이 문제를 금방 풀고 다시 ..

코딩테스트 2023.06.15

[백준] 2023 신기한 소수 자바

https://www.acmicpc.net/problem/2023 2023번: 신기한 소수 수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수 www.acmicpc.net 메모리가 4MB로 작아서 에라토스테네스의 체는 사용이 불가능하다. 그리고 앞자리부터 더해가면서 소수인지 판별해가는 아이디어가 중요했다. import java.util.*; public class Main { static StringBuilder sb = new StringBuilder(); public static void recursion(int n,int count){ if(coun..

코딩테스트 2023.05.30

[프로그래머스] 조건에 맞는 사용자 정보 조회하기 - ORACLE

GROUP BY,HAVING만 잘 써서 서브쿼리(인라인 뷰 방식)을 만든다면 어렵지않게 풀 수 있는 문제입니다. --oracle SELECT A.USER_ID,A.NICKNAME,B.PRICE AS TOTAL_SALES FROM USED_GOODS_USER A, (SELECT WRITER_ID,SUM(PRICE) AS PRICE FROM USED_GOODS_BOARD GROUP BY WRITER_ID,STATUS HAVING STATUS = 'DONE' AND SUM(PRICE) >= 700000) B WHERE A.USER_ID = B.WRITER_ID ORDER BY TOTAL_SALES

[프로그래머스] 조건에 맞는 사용자와 총 거래금액 조회하기 - ORACLE

이번 문제는 '테이블에서 중고 거래 게시물을 3건 이상 등록한 사용자의 사용자 ID' 이 문장이 중요했고 나머지는 문자열 합치는 거라 그렇게 어렵진않을 것 같네요. 앞서 말한 문장을 아래처럼 Group by, having으로 표현할 수 있다면 조인을 걸거나 USER_ID의 조건으로 IN을 걸어서 풀 수 있어요. SELECT WRITER_ID FROM USED_GOODS_BOARD GROUP BY WRITER_ID HAVING COUNT(*) >= 3 SUBSTR로 문자열 나누고 ||이나 concat 사용해서 문자열 결합하는 건 그리 어렵지않으니 쉽게 해결할 수 있는 문제네요. -- oracle SELECT A.USER_ID,A.NICKNAME,A.CITY || ' ' || STREET_ADDRESS1 |..

728x90
반응형