목록알고리즘 (88)
Hayden's Archive
알고리즘 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/42588 코딩테스트 연습 - 탑 수평 직선에 탑 N대를 세웠습니다. 모든 탑의 꼭대기에는 신호를 송/수신하는 장치를 설치했습니다. 발사한 신호는 신호를 보낸 탑보다 높은 탑에서만 수신합니다. 또한, 한 번 수신된 신호는 다 programmers.co.kr 내가 작성한 코드 class Solution { public int[] solution(int[] heights) { int[] answer = new int[heights.length]; int send = 0; int receive = 0; for(int i=heights.length-1; i>=1; i--){ if(heights[i]..
알고리즘 문제 출처 https://programmers.co.kr/learn/courses/30/lessons/12917 코딩테스트 연습 - 문자열 내림차순으로 배치하기 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 � programmers.co.kr 내가 작성한 코드 import java.util.Arrays; class Solution { public String solution(String s) { String answer = ""; String upper = ""; String lower = ""; String[] str = s.split(""); A..
알고리즘 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12941 코딩테스트 연습 - 최솟값 만들기 길이가 같은 배열 A, B 두개가 있습니다. 각 배열은 자연수로 이루어져 있습니다. 배열 A, B에서 각각 한 개의 숫자를 뽑아 두 수를 곱합니다. 이러한 과정을 배열의 길이만큼 반복하며, 두 수를 곱 programmers.co.kr 내가 작성한 코드 Arrays 클래스의 sort() 메소드를 통해서 배열 A, B를 오름차순으로 정렬하고, A는 0번째 인덱스부터 B는 마지막 인덱스부터 서로 곱한 것을 answer에 더해간다. import java.util.Arrays; class Solution{ public int solution(int []A,..
알고리즘 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/42842 코딩테스트 연습 - 카펫 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 �� programmers.co.kr 내가 작성한 코드 아이디어) - 갈색 개수와 노란색 개수는 가로와 세로를 곱한 값과 같다. - (가로-2) * (세로-2) 는 노란색 개수와 같다. import java.util.ArrayList; class Solution { public int[] solution(int brown, int yellow) { int[] answ..
알고리즘 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12953 코딩테스트 연습 - N개의 최소공배수 두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배�� programmers.co.kr 관련 포스팅 : https://hayden-archive.tistory.com/140 내가 작성한 코드 - 먼저 유클리드 호제법을 활용해서 재귀함수를 써서 최소공배수를 리턴하는 메소드를 작성한다. - 아이디어 : "세 수의 최소공배수"는 "두 수의 최소공배수"와 "다른 한 수"의 최소공배수와 ..

알고리즘 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12939 코딩테스트 연습 - 최댓값과 최솟값 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 (최소값) (최대값)형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를�� programmers.co.kr 내가 작성한 코드 class Solution { public String solution(String s) { String answer = ""; String[] str = s.split(" "); int max = Integer.MIN_VALUE; int min = Integer.MAX_VALUE; for(in..

알고리즘 문제 풀이 : https://www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 � www.acmicpc.net 백준 단계별로 풀어보기 - 문자열 문제 중 가장 낮은 정답 비율을 기록한 문제. 문제 자체가 어렵다기보다는 고려해야 할 예외가 많다. 단어 사이에 들어가있는 공백, 맨 앞에 있는 공백, 맨 뒤에 있는 공백을 모두 고려했고 이클립스에서는 잘만 돌아가는데 백준에서는 틀렸다고 떴다. 4번 정도 고배를 마시고 내가 놓친 예외가 뭐가 있을까 계속 생각해봤다. 내가 미처 한 가..
알고리즘 문제 출처 : https://www.acmicpc.net/problem/1316 1316번: 그룹 단어 체커 그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때� www.acmicpc.net 내가 작성한 코드 입력받은 문자열을 char 배열로 바꾸고, 반복문을 돌려 기준이 되는 charStr[j] 값을 두고 k번째는 같지 않은데 k+1번째는 같을 경우 그룹 단어에 해당되지 않으므로 break하여 반복문을 깨고 나오도록 하였다. 그룹단어를 식별하기 위해서 boolean 타입의 flag를 따로 두었다. 어떻게 문제는 해결했지만 다소..
알고리즘 문제 출처 : https://www.acmicpc.net/problem/2941 2941번: 크로아티아 알파벳 문제 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= www.acmicpc.net 내가 작성한 코드 String 클래스의 substring() 메소드를 통해 주어진 문자열을 먼저 세개씩 자르고 "dz="와 일치하는지 살펴본다. 그 뒤 문자열을 두개씩 잘라서 나머지 변경된 크로아티아 알파벳과 비교한다. 이 때 "dz="와 "z="는 중복으로 측정될 수 있고, 크로아티아 알파벳을 추려낸 후 남아있는 알파벳의 개수도 합산해야 ..
알고리즘 문제 출처 : https://www.acmicpc.net/problem/2675 2675번: 문자열 반복 문제 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 www.acmicpc.net 내가 작성한 코드 거의 처음 써보는 3차원 배열. 테스트 케이스의 숫자를 받고 또 그 안으로 들어가서 각각의 횟수와 문자열을 받고 그 횟수에 맞게 문자열을 순차적으로 반복하다 보니 3차원 배열까지 가게 되었다. 문자열에서 순차적으로 인덱스에 접근하기 위해 String 클래스의 charAt() 메소드를 활용하였다. import java.util.Scanner; pub..