ALGORITHM/프로그래머스 | 백준 | 삼성 | 카카오 87

[백준] 9372번 상근이의 여행

https://www.acmicpc.net/problem/9372 9372번: 상근이의 여행 문제 상근이는 겨울방학을 맞아 N개국을 여행하면서 자아를 찾기로 마음먹었다. 하지만 상근이는 새로운 비행기를 무서워하기 때문에, 최대한 적은 종류의 비행기를 타고 국가들을 이동하려� www.acmicpc.net 문제 : 가장 적은 종류의 비행기로 모든 국가를 여행한다. 풀이 : 국가는 정점, 비행기는 간선 인접 행렬로 나타내서 왕복할 수 있으면 연결된 그래프이므로 1로 연결하였습니다. bfs를 활용하여 큐에 들어간 횟수를 세어줬습니다. import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scann..

[백준] 11403번 경로 찾기

https://www.acmicpc.net/problem/11403 11403번: 경로 찾기 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 경로가 있는지 없는지 구하는 프로그램을 작성하시오. www.acmicpc.net 문제 : 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 경로가 있는지 없는지 구하는 프로그램을 작성하시오. 풀이 : 0 1 0 0 0 1 1 0 0 일 때, 0->1 / 1-> 2 / 2-> 0 이므로 0->1->2->0 으로 접근이 가능합니다. (1->2->0, 2->1->0) bfs 활용해서 접근 가능하면 1, 그렇지 않다면 0 으로 출력합니다. import java.util.Linke..

[백준] 7562번 나이트의 이동

https://www.acmicpc.net/problem/7562 7562번: 나이트의 이동 문제 체스판 위에 한 나이트가 놓여져 있다. 나이트가 한 번에 이동할 수 있는 칸은 아래 그림에 나와있다. 나이트가 이동하려고 하는 칸이 주어진다. 나이트는 몇 번 움직이면 이 칸으로 이동할 www.acmicpc.net import java.util.Arrays; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main { static int T, I, count; static int[][] map, dir = { { -2, -1 }, { -1, -2 }, { 1, 2 }, { 2, 1 }, { 1..

[백준] 2644번 촌수계산

https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1≤n≤100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어진� www.acmicpc.net 문제풀이: 촌수를 계산하기 위하여 그래프 이용, 번호로 된 사람이 정점, 간선의 수가 촌수의 수가 됩니다. 그래프를 인접행렬 map으로 나타내줍니다. check 배열은 촌수의 수를 구하기 위한 배열입니다. bfs를 활용합니다. 이때 주의할 점은 촌수를 계산할 수 없을 때 -1을 출력합니다. import java.util.LinkedList; import java.util.Queue..

[프로그래머스] 전화번호 목록

https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조�� programmers.co.kr 문제설명 : phone_book에서 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false 그렇지 않으면 true 몰랐던 점: boolean startsWith(String prefix) a.startsWith(b) : a가 b로 시작한다면(b가 a의 접두어라면) true , 그렇지 않으면 false 반환 class Solution { public b..

[프로그래머스] 기능개발

https://programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 �� programmers.co.kr 문제설명 : 진도가 적힌 progresses와 개발 속도가 적힌 배열 speeds가 주어질 때 각 배포마다 몇개의 기능이 배포되는지 구하기 진도가 100%일 때 서비스에 반영할 수 있다. 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발 될 수 있지만 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포된다. 진도율이 95%인 작업의 개발 속도가 ..

[프로그래머스] 124 나라의 숫자

https://programmers.co.kr/learn/courses/30/lessons/12899 코딩테스트 연습 - 124 나라의 숫자 124 나라가 있습니다. 124 나라에서는 10진법이 아닌 다음과 같은 자신들만의 규칙으로 수를 표현합니다. 124 나라에는 자연수만 존재합니다. 124 나라에는 모든 수를 표현할 때 1, 2, 4만 사용합니다. programmers.co.kr 목표 : 1,2,4 로 모든 수 표현하기 3진법을 사용해서 1%3 = 1 , 2%3 = 2, 3%3 = 0 인데 나머지가 0이면 4로 바꿔준다. (124 나라 수로 표현하기 위해) 배열의 인덱스를 이용해서 4,1,2 로 저장 6은 124나라에서 14이다. 6을 3으로 나눈 나머지가 0, 3으로 나눈 몫은 2 0을 4로 변경,..

[프로그래머스] 가장 큰 수

https://programmers.co.kr/learn/courses/30/lessons/42746# 코딩테스트 연습 - 가장 큰 수 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수를 알아내 주세요. 예를 들어, 주어진 정수가 [6, 10, 2]라면 [6102, 6210, 1062, 1026, 2610, 2106]를 만들 수 있고, 이중 가장 큰 �� programmers.co.kr import java.util.*; class Solution { static String[] arr; public String solution(int[] numbers) { arr = new String[numbers.length]; for(int i =0; i< arr.length;i++..

[SWEA] 6719. 성수의 프로그래밍 강좌 시청

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWd7sgDatsMDFAUh SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 설명 : 성수의 실력이 A라고 할 때, 수준이 M인 강좌를 시청하고 나면 성수의 실력은 (A+M)/2가 된다. 즉, 성수는 자신이 보는 강좌가 좋은 지 아닌지 판단하지 않고 그대로 강좌를 받아들이기 때문에, 실력보다 낮은 수준의 강좌를 보면 실력이 낮아질 수 있다. 현재 성수는 아직 아무런 실력이 없다. 즉 실력이 0이다. 성수는 볼 수 있는 강좌 총 N개 찾았고 시간 문제상 이 중에서 K개를..

[SWEA] 6782. 현주가 좋아하는 제곱근 놀이

https://swexpertacademy.com/main/code/problem/problemDetail.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 문제 설명 : 어느 날 현주는 제곱근 놀이를 만들기로 했는데, 룰은 다음과 같다. - 2이상의 어떤 정수 N이 있다. - N을 N+1로 바꿀 수 있다. - 이 정수일 때, N을 으로 바꿀 수 있다. 게임의 목표는 N을 2로 만드는 것이다. N을 2로 만들기 위해 조작해야 하는 횟수의 최솟값을 구하는 프로그램을 작성하라. import java.util.Scanner; public class Solution { public static void main(S..