ALGORITHM 100

[백준] 7568번 덩치

https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x,y)로 표시된다. 두 사람 A 와 B의 덩� www.acmicpc.net 문제 : 두 사람 A 와 B의 덩치가 각각 (x,y), (p,q)라고 할 때 x>p 그리고 y>q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다. 학생 N명의 몸무게와 키가 담긴 입력을 읽어서 각 사람의 덩치 등수를 계산하여 출력해야 한다. 문제 풀이 : 브루트 포스 자신 보다 큰 몸무게가 있는 사람이 있으면 키도 큰지 확인해줘서 등수를 세줍니다. import java..

[백준] 1389번 케빈 베이컨의 6단계 법칙

https://www.acmicpc.net/problem/1389 1389번: 케빈 베이컨의 6단계 법칙 첫째 줄에 유저의 수 N (2 ≤ N ≤ 100)과 친구 관계의 수 M (1 ≤ M ≤ 5,000)이 주어진다. 둘째 줄부터 M개의 줄에는 친구 관계가 주어진다. 친구 관계는 A와 B로 이루어져 있으며, A와 B가 친구라는 뜻�� www.acmicpc.net import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main { static int N, M; static int[][] map; static boolean[] visited; static Queue queue; static int c..

[백준] 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++..