Development Logs/Algorithms 84

[JAVA] 프로그래머스 : 숫자 게임 (Summer/Winter Coding(~2018))

programmers.co.kr/learn/courses/30/lessons/12987?language=java 코딩테스트 연습 - 숫자 게임 xx 회사의 2xN명의 사원들은 N명씩 두 팀으로 나눠 숫자 게임을 하려고 합니다. 두 개의 팀을 각각 A팀과 B팀이라고 하겠습니다. 숫자 게임의 규칙은 다음과 같습니다. 먼저 모든 사원이 무작위로 � programmers.co.kr 해결 방안 문제에서 원하는 것은 B의 최대 승점이므로 A가 최소인 경우부터 차근차근 B가 높을 때의 갯수를 구해준다. A와 B 배열을 오름차순으로 정렬해준다. A 작은 수부터 B와 비교를 해주는데 이때 B의 배열을 하나씩 증가하면서 해준다. 이 때 B 배열의 index 시작 값은 A[i] < B[j] 보다 큰 경우가 됬을 때 idx ..

[JAVA] 프로그래머스 : 점프와 순간 이동 (Summer/Winter Coding(~2018))

programmers.co.kr/learn/courses/30/lessons/12980?language=java 코딩테스트 연습 - 점프와 순간 이동 OO 연구소는 한 번에 K 칸을 앞으로 점프하거나, (현재까지 온 거리) x 2 에 해당하는 위치로 순간이동을 할 수 있는 특수한 기능을 가진 아이언 슈트를 개발하여 판매하고 있습니다. 이 아이언 슈� programmers.co.kr 해결 방안 처음에는 문제에서 제시된 해결 방안을 보고 탐색을 이용한 최소 값을 구하려고 하였으나 depth가 정해져 있지 않고 입력으로 주어진 n이 10억이 넘는 것을 보고 다른 방법을 생각해보게 되었다. n이 정해져 있고 최소 건전지 사용량도 정해져 있다고 생각하게 되었고 문제에서 주어진 5와 6을 이용해 가장 좋은 방법을 ..

[JAVA] 프로그래머스 : 방문 길이 (Summer/Winter Coding(~2018))

https://programmers.co.kr/learn/courses/30/lessons/49994?language=java 코딩테스트 연습 - 방문 길이 programmers.co.kr 구현 문제이다. 처음 가본 길이를 구하는 알고리즘을 구현하면 된다. 해결 방안 문제를 크게 보면 dirs를 돌면서 게임 캐릭터를 움직여준다. 캐릭터 움직이는 함수는 moveCharacter이다. 1. char형 dir에 의해 nx, ny를 정해준다. 2. nx, ny의 범위를 확인해준다. 2.1 구해진 nx, ny가 -5~5 => 0~10이 되므로 nx, ny 둘 중 하나라도 0~10 범위를 벗어나면 해당 과정은 아무것도 안한다. 2.2. nx, ny가 둘다 0~10 범위 안에 든다면 이동을 하게 되는데 boolean..

[JAVA] 프로그래머스 : 멀쩡한 사각형 (Summer/Winter Coding(2019))

https://programmers.co.kr/learn/courses/30/lessons/62048?language=java 코딩테스트 연습 - 멀쩡한 사각형 가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을 �� programmers.co.kr 최대 공약수를 이용해서 구할 수 있을 거라고까지 밖에 생각 하지 못해서 다른 사람의 코드를 참고하였다. 해결 방안 간단하게 말해서 전체에서 선이 그어지는 구간(흰색 부분)을 빼는 문제이다. 하지만 선이 그어지는 부분을 알아내는 방법이 어려웠다. 세로와 가로를 보고 각각 3칸 2칸 간격으로 일정하게 잘려지는..

[JAVA] 프로그래머스 : 약수의 합 (Level 1)

https://programmers.co.kr/learn/courses/30/lessons/12928?language=java 코딩테스트 연습 - 약수의 합 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 제한 사항 n은 0 이상 3000이하인 정수입니다. 입출력 예 n return 12 28 5 6 입출력 예 설명 입출력 예 #1 12의 약수 programmers.co.kr 해결 방안 1~n 사이 숫자로 나눴을 때 나머지가 0이 되는 경우는 모두 약수이다. 코드 class Solution { public int solution(int n) { int answer = 0; for(int i=1; i

[JAVA] 프로그래머스 : 소수 찾기 (Level 1)

https://programmers.co.kr/learn/courses/30/lessons/12921?language=java 코딩테스트 연습 - 소수 찾기 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 programmers.co.kr 해결 방안 주어진 숫자 n의 1~n 까지의 소수 갯수를 찾는 문제이다. 에라토스테네스의 체를 사용하여 i 가 소수인지 확인하였다. 코드 class Solution { public int solution(int n) { int answer = 0; for(int i=2; i

[JAVA] 프로그래머스 : 같은 숫자는 싫어 (Level 1)

https://programmers.co.kr/learn/courses/30/lessons/12906?language=java 코딩테스트 연습 - 같은 숫자는 싫어 배열 arr가 주어집니다. 배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다. 이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다. 단, 제거된 후 남은 programmers.co.kr 해결 방안 standard라고 기준을 만들고 기준과 같으면 중복된 숫자이므로 넘어가고 다른 숫자가 나오면 list에 넣어준다. 그 후 list를 int 배열에 옮겨준다. 코드 import java.util.*; public class Solution { public int[] solution(int []arr)..

[JAVA] 프로그래머스 : 문자열 다루기 기본 (Level 1)

https://programmers.co.kr/learn/courses/30/lessons/12918?language=java 코딩테스트 연습 - 문자열 다루기 기본 문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수, solution을 완성하세요. 예를 들어 s가 a234이면 False를 리턴하고 1234라면 True를 리턴하면 됩니다. 제한 사항 s는 길이 1 이�� programmers.co.kr 해결 방안 문자열 s의 길이가 4나 6이 아니면 false를 return 해준다. Character의 isDigit() 함수를 사용하여 문자열 s의 각 자리의 char의 숫자여부를 확인해준다. 만약 false가 나오면 문자이므로 false를 returnn 해준다. * Characte..

[JAVA] 프로그래머스 : 문자열 내 마음대로 정렬하기 (Level 1)

https://programmers.co.kr/learn/courses/30/lessons/12915?language=java 코딩테스트 연습 - 문자열 내 마음대로 정렬하기 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1� programmers.co.kr 해결 방안 Comparator를 활용하여 n번째 index 값을 strings[i] 앞에 붙여서 순서를 정렬하였습니다. 코드 import java.util.*; // 문자열 내 마음대로 정렬하기 class Solution { // strings 길이 1~50 // strin..

[JAVA] 프로그래머스 : JadenCase 문자열 만들기 (Level 2)

https://programmers.co.kr/learn/courses/30/lessons/12951# 코딩테스트 연습 - JadenCase 문자열 만들기 JadenCase란 모든 단어의 첫 문자가 대문자이고, 그 외의 알파벳은 소문자인 문자열입니다. 문자열 s가 주어졌을 때, s를 JadenCase로 바꾼 문자열을 리턴하는 함수, solution을 완성해주세요. 제한 조건 programmers.co.kr 해결 방안 s를 함부로 split 하게 되는 경우 주어진 s 중 3People__abc 와 같은 경우 두 번 띄어쓰기를 처리하는데 어려움을 겪었다. 따라서 StringBuilder를 이용하여 i일 때 i-1 인덱스가 " "인 경우 대문자로 변환해주었다. 이 때 StringBuilder의 setCharA..