Algorithm27 [Java] Codility - TapeEquilibrium 문제 풀이 문제 문제 바로가기 Task Score 100% Correctness 100% Performance 100% 문제 풀이 class Solution { public int solution(int[] A) { int sumAllVal = 0; for(int cand : A) sumAllVal += cand; int minDiff = Integer.MAX_VALUE; int currentDiff = Integer.MAX_VALUE; int sumLeftVal = 0; int sumRightVal = 0; for (int i = 0; i < A.length - 1; i++) { sumLeftVal += A[i]; sumRightVal = sumAllVal - sumLeftVal; currentDiff = Mat.. Algorithm/Problem Solving 2022. 9. 5. [Java] Codility - PermMissingElem 문제 풀이 문제 문제 바로가기 Task Score 100% Correctness 100% Performance 100% 문제 풀이 // you can also use imports, for example: import java.util.*; // you can write to stdout for debugging purposes, e.g. // System.out.println("this is a debug message"); class Solution { public int solution(int[] A) { Arrays.sort(A); for (int i = 0; i < A.length; i++) { if(i+1 != A[i]){ return i+1; } } return A.length + 1; } } Algorithm/Problem Solving 2022. 9. 5. [Java] Codility - FrogJmp 문제 풀이 문제 문제 바로가기 Task Score 100% Correctness 100% Performance Not assessed 문제 풀이 class Solution { public int solution(int X, int Y, int D) { if(Y-X == 0) return 0; return (int) Math.ceil((Y-X) / (double) D); } } 처음 접근할 땐 별 생각없이 반복문으로 접근했는데, 시간초과가 나는걸 보고 생각좀 하고 풀걸 후회했다. 그래서 그 후 다시 푼 풀이는 다음과 같다. y-x가 0이 나올 예외사항만 처리해주고, 나머지는 Math.ceil을 사용하여 처리해주었다. 주의할 점으론 (double) 을 붙여줘야지 반올림되는 부분만 조심하면 된다. Algorithm/Problem Solving 2022. 9. 5. [Java] Codility - OddOccurrencesInArray 문제 2가지 풀이 문제 문제 바로가기 Task Score 100% Correctness 100% Performance 100% 문제 풀이 1 (첫 풀이) import java.util.*; public class L2_OddOccurrencesInArray { public static void main(String[] args) { int[] candiArr = {9, 3, 9, 7, 3, 9, 9}; Map candiMap = new HashMap(); for (int i = 0; i < candiArr.length; i++) { if(candiMap.containsKey(candiArr[i])) candiMap.put(candiArr[i], candiMap.get(candiArr[i]) + 1); else candiM.. Algorithm/Problem Solving 2022. 9. 5. [Java] Codility - CyclicRotation 문제 풀이 문제 문제 바로가기 Task Score 100% Correctness 100% Performance Not assessed 문제 풀이 // you can also use imports, for example: import java.util.*; // you can write to stdout for debugging purposes, e.g. // System.out.println("this is a debug message"); class Solution { public int[] solution(int[] A, int K) { for (int i = 0; i < K; i++) { boolean isFirst = true; int[] newArr = new int[A.length]; for (int j.. Algorithm/Problem Solving 2022. 9. 5. [Java] Codility - BinaryGap 문제 풀이 문제 A binary gap within a positive integer N is any maximal sequence of consecutive zeros that is surrounded by ones at both ends in the binary representation of N. For example, number 9 has binary representation 1001 and contains a binary gap of length 2. The number 529 has binary representation 1000010001 and contains two binary gaps: one of length 4 and one of length 3. The number 20 has binar.. Algorithm/Problem Solving 2022. 9. 3. [Java] 백준 숫자 카드 - 10815번 문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다. 두 숫자 카드에 같은 수가 적혀있는 경우는 없다. 셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 가지고 있는 숫자 카드인지 아닌지를 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되어져 있다. 이.. Algorithm/Problem Solving 2022. 8. 3. [Java] 백준 단어 공부 - 1157번 문제 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. 입력 첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다. 주어지는 단어의 길이는 1,000,000을 넘지 않는다. 출력 첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다. 단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 ?를 출력한다. 예제 입/출력 풀이 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main { static BufferedReader br; stati.. Algorithm/Problem Solving 2022. 7. 31. [Java] 백준 알파벳 찾기 - 10809번 문제 알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다. 출력 각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다. 입/출력 풀이 import java.io.BufferedReader; import java.io.IOExcepti.. Algorithm/Problem Solving 2022. 7. 31. [Java] 백준 문자열 반복 - 2675번 문제 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다. QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다. 입력 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다. 출력 각 테스트 케이스에 대해 P를 출력한다. 예제 입력 1 복사 2.. Algorithm/Problem Solving 2022. 7. 31. [Java] 탐욕 알고리즘이란? (개념/ 코드 예제/ 알고리즘 한계) 탐욕 알고리즘(Greedy Algorithm)이란? 최적의 해에 가까운 값을 구하기 위해 사용되는 알고리즘이다. 가장 큰 특징은 여러 경우 중 하나를 결정해야할 때마다, 매 순간 최적이라고 생각되는 경우를 선택하는 방식으로 진행하여 최종적인 값을 구하는 방식을 말한다. 특징 자체가 구현 방식을 말하는 것이기에 예제를 통해 바로 알아보겠다. 예제1) 동전 문제 Q1. 지불해야 하는 값이 4720일 때, 1원, 50원, 100원, 500원 동전으로 동전의 수가 가장 적게 지불하게끔 구현해보아라. Java 코드 구현 public class GreedyCoin { public static void main(String[] args) { //4720을 500,100, 50, 10 동전으로 최소한의 개수 구하기 A.. Algorithm/Concept 2022. 7. 15. [Java] 너비 우선 탐색(BFS), 깊이 우선 탐색(DFS)이란? (개념 /코드 예제) 서론 이번엔 대표적인 그래프 탐색 알고리즘인 너비우선탐색과 깊이 우선 탐색에 대해 알아보려합니다. 보통 BFS, DFS라 불리며, 굉장히 많이 쓰이는 탐색 알고리즘에 대해 알아보겠습니다. 너비 우선 탐색(Breadth First Search)이란? 정점들과 같은 레벨에 있는 노드들을 먼저 탐색하는 방식을 말한다. 깊이 우선 탐색(Depth First Search)이란? 정점의 자식들을 먼저 탐색한느 방식을 말한다. 너비 우선 탐색 구현 그래프에서 보통 각 덩어리를 노드, 이어진 선을 간선 또는 엣지라 칭한다. BFS 방식에서 노드들의 간선 흐름을 정리하면 다음과 같다. 구현 방식 탐색 순서 (위 이미지 참고) A - B - C - D - G - H - I - E - F - J 한 단계 씩 내려가면서, 해.. Algorithm/Concept 2022. 7. 14. 이전 1 2 3 다음 💲 많이 본 글