본문 바로가기

프로그래머스9

221124 알고리즘 풀이 1문제 1. 키패드 누르기 https://school.programmers.co.kr/learn/courses/30/lessons/67256 1) 문제 설명 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다. 가운데 열의 4개의 숫자 2, 5, 8, 0을 입력할 때는 두 엄지.. 2022. 11. 24.
221123 알고리즘 풀이 6문제 1. K번째 수 https://school.programmers.co.kr/learn/courses/30/lessons/42748 1) 문제 설명 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3]입니다. 1에서 나온 배열을 정렬하면 [2, 3, 5, 6]입니다. 2에서 나온 배열의 3번째 숫자는 5입니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 .. 2022. 11. 23.
221122 알고리즘 풀이 6문제 1. 시저 암호 https://school.programmers.co.kr/learn/courses/30/lessons/12926 1) 문제 설명 어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 "AB"는 1만큼 밀면 "BC"가 되고, 3만큼 밀면 "DE"가 됩니다. "z"는 1만큼 밀면 "a"가 됩니다. 문자열 s와 거리 n을 입력받아 s를 n만큼 민 암호문을 만드는 함수, solution을 완성해 보세요. 2) 제한 사항 공백은 아무리 밀어도 공백입니다. s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다. s의 길이는 8000이하입니다. n은 1 이상, 25이하인 자연수입니다. 3) 풀이 아스키코드 값을 조정하여 풀려고 .. 2022. 11. 22.
221121 알고리즘 풀이 6문제 1. 로또의 최고 순위와 최저 순위 https://school.programmers.co.kr/learn/courses/30/lessons/77484 1) 문제 설명 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호가 일치 3 4개 번호가 일치 4 3개 번호가 일치 5 2개 번호가 일치 6(낙첨) 그 외 로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 .. 2022. 11. 21.
221119 알고리즘 풀이 8문제 1. 내림차순으로 배치하기 https://school.programmers.co.kr/learn/courses/30/lessons/12933 1) 문제 설명 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 2) 제한 사항 n은 1이상 8000000000 이하인 자연수입니다. 3) 풀이 자연수의 자릿수를 분리하는 건 이전 문제에서 진행한대로 하면 된다. 그 후 거기에 Collections.sort(list)나 list.sort()를 써서 정렬하면 된다. 마지막에 다시 정수로 만들어서 반환할 때 연산속도를 높이기 위해 LinkedList를 사용하였다. 4) 소스 .. 2022. 11. 19.
221118 알고리즘 풀이 1 문제 프로그래머스 코딩 테스트 난이도 1 - '2016년' 풀이 과정 문제를 보자마자 왠지 달력과 관련된 Java 클래스가 있을 것 같았다. 역시나 검색을 해보니 java.util 패키지에 Calendar라는 추상 클래스가 있었다. Calendar 클래스 생성 방법과, 현재 요일 얻는 법, 날짜를 변경한 후 요일을 얻는 법을 찾아보았다. 처음 테스트 해볼 때 날짜를 변경하면 요일이 이상하게 나왔었는데, 알고 보니 .set(년,월,일)로 날짜를 변경할 때 0이 1월이고 11이 12월로 들어가는 거였다..! Calendar에서는 요일은 일요일이 1 토요일이 7로 1~7까지의 숫자로 리턴값을 받을 수 있었다. 해당 값은 문자열이 담긴 배열을 만들어 숫자를 문자열로 쉽게 바꿀 수 있었다. (이 방법은 Calen.. 2022. 11. 18.