본문 바로가기

프로그래머스39

20230702 [Java] 문제풀이 20230702 [Java] 문제풀이 [프로그래머스] 덧칠하기 페인트 칠을 하는 것이고, 칠해야 하는 구역 section이 주어지고, 한번에 칠할 수 있는 길이 m이 주어진다 여기서, 페인트 칠은, 칠해야 하는 구역은 무조건 칠해야 하고, 이미 칠해진 곳에 덧칠할 수 있다 max 라는 변수를 만들어서, 페인트 칠을 할 수 있는 마지막 구역을 정해준다 max 안에 들어간 구역들은, 한번에 페인트 칠이 될 수 있는 공간이다 section[i] 2023. 7. 2.
20230629 [Java] 문제풀이 20230629 [Java] 문제풀이 공원 산책 직사각형 모양의 공원 배열과, 로봇 강아지가 수행해야 하는 명령어가 주어진다 직사각형 모양에는 X (장애물), S (시작점), O (강아지가 갈 수 있는 곳)이 있다 명령어는 "방향, 이동하는칸" 이 주어진다 E 2 : 동쪽으로 2칸 W 1 : 서쪽으로 1칸 N 4 : 북쪽으로 4칸 S 3 : 남쪽으로 3칸 만약 명령어가 주어지는데, 장애물에 부딛히거나, 공원 밖으로 나갈 경우, 명령어를 실행하지 않고, 다음 명령어로 넘어간다 코드는 매우 길지만 간단하다 시작점의 좌표를 찾기 시작점 기준으로 명령어를 하나씩 꺼내보기 만약 현재 좌표에서 명령어를 실행했을 때에 공원 안으로 들어오면, 4번으로 넘어간다 for문을 통해, X, 즉 장애물이 있는지 확인을 해본다 .. 2023. 6. 29.
20230628 [Java] 문제풀이 20230628 [Java] 문제풀이 달리기 경주 players 배열은, 경주가 시작할 때에, 선수들이 배치된 순서다 callings는, 선수 이름이 불릴 때마다, 앞에 선수와 순위가 바뀌는 것이다 즉 선수 이름이 불리면, 앞에 선수를 추월한 것이다 처음에는 너무 배열로 하겠다는 생각만 해서, 시간 초과가 나왔다 추후에 map을 사용해서 앞의 선수의 이름, 그리고 등수를 찾으면서, 배열에서 선수의 자리를 바꿔주었더니, 시간 초과를 해결할 수 있었다 import java.util.*; class Solution { public String[] solution(String[] players, String[] callings) { HashMap map = new HashMap(); for (int i = 0;.. 2023. 6. 28.
20230625 Java 문제풀이 20230625 Java 문제풀이 전국 대회 선발 고사 학생 3명을 선발하는 문제이다 문제에서는 학생들의 등수가 담긴 배열과, 학생들의 참여 여부가 담긴 배열이 주어진다 두 개의 배열을 탐색하며, 선발 고사를 참여하는 학생들 중, 높은 등수를 가진 학생들을 고른다 높은 등수부터 10000 * (제일 높은 등수) + 100 * (2번째 높은 등수) + (3번째 높은 등수) 의 식을 구하는 것이다 import java.util.*; class Solution { public int solution(int[] rank, boolean[] attendance) { ArrayList list = new ArrayList (); // number는 등수를 말하는 것 // 즉 등수는 1씩 증가할 것이고, 참가하는 학.. 2023. 6. 25.
20230614 [Java] 문제풀이 20230614 [Java] 문제풀이 [백준] 10818 최소, 최대 배열을 이용하여, 주어진 숫자들의 최소와 최대값을 찾으면 된다 파이썬을 이용할 때에 N개의 입력값을 공백으로 주어진 것을 한번에 리스트로 받아서, for문을 돌며 최소와 최대값을 찾았다 자바 같은 경우 scanner.next(); 를 사용하여 하나의 for문에서, 입력값을 받으면서 최소와 최대값을 찾아냈다 만약에 배열을 출력하고 싶을 때에는 Arrays 를 import 받고, Arrays.toString(배열이름) 으로 출력하면 된다 import java.util.Arrays; import java.util.Scanner; public class Baekjoon10818 { public static void main(String[] a.. 2023. 6. 14.
Java 문제풀이 (Programmers) Java 문제풀이 (Programmers) 같은 숫자는 싫어 배열이 주어진다 배열 안에 숫자가 주어지는데, 연속으로 나열된 같은 숫자는 하나의 숫자로 반환한다 예) [1, 1, 3, 4, 4, 4, 4, 5, 6, 6, 6, 7] => [1, 3, 4, 5, 6, 7] 1, 4, 6은 모두 연속으로 같은 숫자로 나열되어 있어, 하나로 줄인다 간단하게, 먼저 제일 앞에 있는 숫자를 배열에 미리 넣는다 그 다음은 인덱스 1로 시작하여, 전의 숫자와 비교하며, 전의 숫자와 다르면, answer 배열에 해당 숫자를 넣으면 된다 import java.util.*; public class Solution { public ArrayList solution(int []arr) { ArrayList answer = ne.. 2023. 6. 14.
SQL 문제풀이 20230601 SQL 문제풀이 20230601 나이 정보가 없는 회원 수 구하기 회원 정보에서 Age가 NULL, 즉 정보가 없는 회원의 수를 구하는 것이다 AGE가 NULL인 회원들을 찾고, COUNT(*)를 통해, 회원 수를 구한다 SELECT COUNT(*) AS USERS FROM USER_INFO WHERE AGE IS NULL 강원도에 위치한 생산공장 목록 출력하기 제목 그대로, 강원도에 위치한 공장을 찾는 것이다 ADDRESS에 강원도로 주소가 적힌 테이블을 출력한다 주소는 '도'만 있는 것이 아닌, 도로명까지 다 작성이 되어있다 그래서 LIKE "강원도%" 를 통해, 강원도로 시작하는 주소를 찾는 것이다 SELECT FACTORY_ID, FACTORY_NAME, ADDRESS FROM FOOD_FACTO.. 2023. 6. 1.
[Java] 문제풀이 (Programmers) Java 문제풀이 (Programmers) 옷가게 할인 받기 10만원 이상은 5%, 30만원 이상은 10%, 50만원 이상은 20% 할인 소수점과 곱하는 것이라서 double을 사용해야 한다 그리고 값은 int 로 반환해서 구해야 한다 (소수점은 버린다고 써져 있) class Solution { public double solution(double price) { if (price < 100000) { return price; } else if(price < 300000) { return (int) (price * 0.95); } else if (price < 500000) { return (int) (price * 0.9); } else { return (int) (price * 0.8); } } } .. 2023. 6. 1.
[Java] 문제풀이 (Programmers) Java 문제풀이 (Programmers) 분수의 덧셈 (numer1 / denom1) + (numer2 / denom2) 의 값을 구해, 분자는 answer[0]에, 분모는 answer[1]에 저장하는 것이다 먼저 answer[0]와 answer[1]에 나누지 않은 채로, 그냥 더해서 저장을 한다 그리고 2부터 시작해서 for문을 돌면서 answer[0]과 answer[1]를 나눌 수 있으면, 계속 나눠준다 최대공약수를 나누는 방법과 똑같은 것이다 (대신 최대공약수를 따로 구하는 것이 아니라, 최대공약수를 구하는 식을 for문과 while문을 통해서 구하는 것이다) class Solution { public int[] solution(int numer1, int denom1, int numer2, in.. 2023. 5. 26.