Algorithms/프로그래머스

Algorithms/프로그래머스

[프로그래머스] '문자열 밀기' - Java

문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요. 문자열 밀기라고 한다면, 배열에서나 리스트 등의 자료구조에서 특정 메서드를 통해 쉽게 해결할 수 있지만, 이 문제에서는 String만 주어졌을때 해결할 방법을 찾는 것이다. Solution 1) 다만 두 문자열이 주어지고, A를 기준으로 B문자열은 얼마나 이동했는지 (오른쪽으로만 밀게됨) 를 판단한다. for(int i = 0; i < A.lengt..

Algorithms/프로그래머스

[프로그래머스] '특이한 정렬' - Java

정수 n을 기준으로 n과 가까운 수부터 정렬하려고 합니다. 이때 n으로부터의 거리가 같다면 더 큰 수를 앞에 오도록 배치합니다. 정수가 담긴 배열 numlist와 정수 n이 주어질 때 numlist의 원소를 n으로부터 가까운 순서대로 정렬한 배열을 ( = 각 숫자에서 n을 뺀 절대값) return하도록 solution 함수를 완성해주세요. n으로부터 가까운 순서대로 정렬한 배열 ( = 각 숫자에서 n을 뺀 절대값) 기준 값 N이 주어지면 그 값을 기준으로 가까운 순으로 "순위"를 매겨 return해야한다. 이 또한 Search(탐색)문제 인 것 같았다. Try 1) int[] answer = {}; List temp = new ArrayList(); // numlist에서 n이 속하는 인덱스를 찾는다. ..

Algorithms/프로그래머스

[프로그래머스] '로그인 성공?' - Java

머쓱이는 프로그래머스에 로그인하려고 합니다. 머쓱이가 입력한 아이디와 패스워드가 담긴 배열 id_pw와 회원들의 정보가 담긴 2차원 배열 db가 주어질 때, 다음과 같이 로그인 성공, 실패에 따른 메시지를 return하도록 solution 함수를 완성해주세요. 웹개발이나 실제 홈페이지에서 쓰일 듯한 로그인 시스템은 아니더라도 간접적으로 데이터가 어떻게 담기는지 알 수 있는 문제일 것 같았다. Try 1) String answer = ""; for(int i = 0; i < db.length; i++) { String id = db[i][0]; String pw = db[i][1]; if(id_pw[0].equals(id)) { // 아이디 / 패스워드 모두 일치 = 로그인 성공 if(id_pw[1].eq..

Algorithms/프로그래머스

[프로그래머스] '등수 매기기' - Java

영어 점수와 수학 점수의 평균 점수를 기준으로 학생들의 등수를 매기려고 합니다. 영어 점수와 수학 점수를 담은 2차원 정수 배열 score가 주어질 때, 영어 점수와 수학 점수의 평균을 기준으로 매긴 등수를 담은 배열을 return하도록 solution 함수를 완성해주세요. 처음 접했을때는 간단한 문제라고 느껴졌다. 2차원배열에 담긴 값들 i 인덱스의 값을 더해 리스트에 저장하고 정렬을 통해 순위를 매기면 되지 않을까 싶었다. 하지만 문제에서 요구하는 출력 기준은 처음 주어진 2차원 배열의 값의 인덱스 순서대로 순위를 출력하는 것이었다. Try 1) int[] answer = {}; List rank = new ArrayList(); List rank_num = new ArrayList(); int su..

Algorithms/프로그래머스

[프로그래머스] '유한소수 판별하기' - Java

소수점 아래 숫자가 계속되지 않고 유한개인 소수를 유한소수라고 합니다. 분수를 소수로 고칠 때 유한소수로 나타낼 수 있는 분수인지 판별하려고 합니다. 유한소수가 되기 위한 분수의 조건은 다음과 같습니다. 기약분수로 나타내었을 때, 분모의 소인수가 2와 5만 존재해야 합니다. 두 정수 a와 b가 매개변수로 주어질 때, a/b가 유한소수이면 1을, 무한소수라면 2를 return하도록 solution 함수를 완성해주세요. 문제에서 주어진 2와 5만을 소인수로 가져야하므로 a/b를 기본 토대로 해결해보고자 하였다. Try 1) int answer = 1; int[] fac = {}; List save = new ArrayList(); // 소수는 2부터시작하므로 2로 초기화 int i = 2; // n이 2보다..

Algorithms/프로그래머스

[프로그래머스] '달리기 경주' - Java

선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다. >> 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다. 삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 나머지 한 변이 될 수 있는 정수의 개수를 return하도록 solution 함수를 완성해주세요. equals() 와 같은 메서드로 이중for문을 돌며 간단히 풀어낼 수 있을거라 생각했지만, 시간제한을 신경써야하는 문제였다. Try 1) String[] answer = new String[players.length]; // 현재 등수 = String[] players // 해설진이 부른 이름 = String[] callings // // 경기 끝났을때의 선수들의 이름을 1등부터 순서대로 ..

Algorithms/프로그래머스

[프로그래머스] '명예의 전당 (1)' - Java

"명예의 전당"이라는 TV 프로그램에서는 매일 1명의 가수가 노래를 부르고, 시청자들의 문자 투표수로 가수에게 점수를 부여합니다. 매일 출연한 가수의 점수가 지금까지 출연 가수들의 점수 중 상위 k번째 이내이면 해당 가수의 점수를 명예의 전당이라는 목록에 올려 기념합니다. 즉 프로그램 시작 이후 초기에 k일까지는 모든 출연 가수의 점수가 명예의 전당에 오르게 됩니다. k일 다음부터는 출연 가수의 점수가 기존의 명예의 전당 목록의 k번째 순위의 가수 점수보다 더 높으면, 출연 가수의 점수가 명예의 전당에 오르게 되고 기존의 k번째 순위의 점수는 명예의 전당에서 내려오게 됩니다. 이 프로그램에서는 매일 "명예의 전당"의 최하위 점수를 발표합니다. 예를 들어, k = 3이고, 7일 동안 진행된 가수의 점수가 ..

Algorithms/프로그래머스

[프로그래머스] '문자열 나누기' - Java

문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다. 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다. 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다. s에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복합니다. 남은 부분이 없다면 종료합니다. 만약 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없다면, 역시 지금까지 읽은 문자열을 분리하고, 종료합니다. 문자열 s가 매개변수로 주어질 때, 위 과정과 같이 문자열들로 분해하고, 분해한 문자열의 개수를 return 하는 함수 solution을 완성하세요. 문제를 먼저..

Algorithms/프로그래머스

[프로그래머스] '겹치는 선분의 길이' - Java

선분 3개가 평행하게 놓여 있습니다. 세 선분의 시작과 끝 좌표가 [[start, end], [start, end], [start, end]] 형태로 들어있는 2차원 배열 lines가 매개변수로 주어질 때, 두 개 이상의 선분이 겹치는 부분의 길이를 return 하도록 solution 함수를 완성해보세요. lines가 [[0, 2], [-3, -1], [-2, 1]]일 때 선분이 두 개 이상 겹친 곳은 [-2, -1], [0, 1]로 길이 2만큼 겹쳐있습니다. 다양한 조건을 모두 만족하는 코드를 짜는것이 목표였다. Try 1) int answer = 0; int min = lines[0][0]; // 첫요소의 x값 int max = lines[0][1]; // 첫요소의 y값 // 가장 좌측과 우측에 해당..

LEFT
'Algorithms/프로그래머스' 카테고리의 글 목록