본문 바로가기

분류 전체보기

(120)
[프로그래머스] 2021 dev-matching 다단계 칫솔 판매 [JAVA] 문제링크 : programmers.co.kr/learn/courses/30/lessons/77486 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, programmers.co.kr (전처리) enroll 순서대로 해당 이름을 1~N까지 고유 번호를 HashMap에 저장했다. 또, referral 배열 정보로 해당 유저의 부모의 번호를 par 배열에 저장했다. seller 정보와 amount를 가지고 최초 이득 유저와 돈을 가지고서 다단계 과정을 수행했다. while문이 그것이며, 해당 코인을 본인에게 더하고 부모에게 넘겨주는 식이다. ..
[프로그래머스] 2021 dev-matching - 행렬 테두리 회전하기 [JAVA] 문제링크 : programmers.co.kr/learn/courses/30/lessons/77485 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr 머리가 안돌아가서 혼났다. 인덱스를 잘 생각해서 회전시키는 문제다 class Solution { public static void show(int arr[][]){ System.out.println(); for(int i=0;i
[프로그래머스] 2021 dev-matching 로또의 최고 순위와 최저 순위 [JAVA] 문제링크 : programmers.co.kr/learn/courses/30/lessons/77484 코딩테스트 연습 - 로또의 최고 순위와 최저 순위 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호 programmers.co.kr 카운트 배열을 사용했다 public int[] solution(int[] lottos, int[] win_nums) { int[] answer = new int[2]; int []cnt = new int[46]; for(int i=0;i=2){ answer[1] = 7-minAns; }else{ answer[1] = ..
[백준] 2098 외판원 순회 문제링크 : www.acmicpc.net/problem/2098 2098번: 외판원 순회 첫째 줄에 도시의 수 N이 주어진다. (2 ≤ N ≤ 16) 다음 N개의 줄에는 비용 행렬이 주어진다. 각 행렬의 성분은 1,000,000 이하의 양의 정수이며, 갈 수 없는 경우는 0이 주어진다. W[i][j]는 도시 i에서 j www.acmicpc.net 어떤 위치에서 출발해서 모든 여행지를 방문하고 마지막엔 다시 원래 위치로 돌아오는 방법 중 가장 짧은 거리를 구하는 문제이다. 처음에 문제를 잘못 알아서 모두 방문 후에 원래 위치로 돌아올 때는 여행지를 방문하면서 와도 되는 줄 알았다. 그래서 플로이드 워셜로 여행지 간 최소거리를 저장해두고 dfs의 마지막에는 start로 돌아오는 최소 거리를 더해주었었다. 하..
[백준] 1562 계단 수 [JAVA] 문제링크 : www.acmicpc.net/problem/1562 1562번: 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 첫 자리 숫자의 경우 1~9까지 오게, 아닐 경우에는 1. 현재숫자가 0이면 다음은 1, 9이면 8 2. 현재 숫자가 0이나 9가 아니면 위 아래 숫자로 다음 숫자를 정했다. 이런 경우를 중복 없이 모두 확인한다. 재귀 탐색 중, 현재 상태가 0~9까지 모두 등장한 계단수인지 판단하기 위해 그 상태를 비트마스크로 확인했다. (10개가 등장했거나 안했거나(0 or 1)로 가능하기 때문에 10자리 이진수로 표현 가능 => 2^10 크기 배열 선언) 어떤 숫자가 등장했는지와 더불어 (몇 번째 수인지, 이전에 무슨 수를 골랐는지..
[백준] 13398 연속합 2 [JAVA] 문제링크 : www.acmicpc.net/problem/13398 13398번: 연속합 2 첫째 줄에 정수 n(1 ≤ n ≤ 100,000)이 주어지고 둘째 줄에는 n개의 정수로 이루어진 수열이 주어진다. 수는 -1,000보다 크거나 같고, 1,000보다 작거나 같은 정수이다. www.acmicpc.net import java.io.*; import java.util.*; public class Main { public static int N,ans; public static int arr[]; public static int dp[][]; public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedRea..
[프로그래머스] kakao 2021년 블라인드 (광고삽입) [JAVA] 문제링크 : programmers.co.kr/learn/courses/30/lessons/72414 코딩테스트 연습 - 광고 삽입 시간을 나타내는 HH, H1, H2의 범위는 00~99, 분을 나타내는 MM, M1, M2의 범위는 00~59, 초를 나타내는 SS, S1, S2의 범위는 00~59까지 사용됩니다. 잘못된 시각은 입력으로 주어지지 않습니다. (예: 04:60:24, 11 programmers.co.kr 카카오 블라인드 문제를 오랜만에 풀어보았다. 어느 시간에 공익광고를 넣는 것이 많은사람들이 보겠는가 하는 단순한 문제이다. 문자열로 주어지는 시간을 초 단위로 바꾸어서 배열에 저장하고 풀었다. => 100:00:00은 36만초이다. => 배열 크기 36만 광고를 넣을 수 있는 시간이 adv_p..
[백준] 11657 타임머신 [JAVA] 문제링크 : www.acmicpc.net/problem/11657 11657번: 타임머신 첫째 줄에 도시의 개수 N (1 ≤ N ≤ 500), 버스 노선의 개수 M (1 ≤ M ≤ 6,000)이 주어진다. 둘째 줄부터 M개의 줄에는 버스 노선의 정보 A, B, C (1 ≤ A, B ≤ N, -10,000 ≤ C ≤ 10,000)가 주어진다. www.acmicpc.net 최단거리 알고리즘은 보통 다익스트라나 플로이드워셜만 풀어왔다. 이 문제는 벨만포드 알고리즘으로 풀린다. 벨만포드 알고리즘은 음수 가중치가 있는 경우의 문제의 경우를 풀 수 있는 것으로 사이클의 존재 또한 알 수 있다. import java.io.*; import java.util.*; public class Main { public sta..