Algorithms

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값 // 가장 좌측과 우측에 해당..

Algorithms/프로그래머스

[프로그래머스] '평행' - Java

점 네 개의 좌표를 담은 이차원 배열 dots가 다음과 같이 매개변수로 주어집니다. [[x1, y1], [x2, y2], [x3, y3], [x4, y4]] 주어진 네 개의 점을 두 개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으면 0을 return 하도록 solution 함수를 완성해보세요. 수학적으로 접근했을때 두 직선이 평행하려면 두 직선의 '기울기'가 같아야한다. 기울기를 구하려면 (y증가량 / x증가량) 식을 만들어야한다. Try 1) int answer = 0; int max_x = 0; int max_y = 0; for(int i = 0; i < dots.length; i++) { for(int j = 0; j dots[i+1][0]) { max_x = dots[i][0];..

Algorithms/백준

[백준] '골드바흐의 추측' - Java

1보다 큰 자연수 중에서 1과 자기 자신을 제외한 약수가 없는 자연수를 소수라고 한다. 예를 들어, 5는 1과 5를 제외한 약수가 없기 때문에 소수이다. 하지만, 6은 6 = 2 × 3 이기 때문에 소수가 아니다. 골드바흐의 추측은 유명한 정수론의 미해결 문제로, 2보다 큰 모든 짝수는 두 소수의 합으로 나타낼 수 있다는 것이다. 이러한 수를 골드바흐 수라고 한다. 또, 짝수를 두 소수의 합으로 나타내는 표현을 그 수의 골드바흐 파티션이라고 한다. 예를 들면, 4 = 2 + 2, 6 = 3 + 3, 8 = 3 + 5, 10 = 5 + 5, 12 = 5 + 7, 14 = 3 + 11, 14 = 7 + 7이다. 10000보다 작거나 같은 모든 짝수 n에 대한 골드바흐 파티션은 존재한다. 2보다 큰 짝수 n이..

Algorithms/백준

[백준] '과제 안 내신 분..?' - Java

X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데, 그 중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오. 출석번호를 통해 과제를 제출안한 학생의 번호를 찾으면 되는 문제이다. HashMap의 개념을 알고 풀면 좋았겠지만 단순히 배열로 풀 수 있었다. for(int i = 1; i < 29; i++) { int in_class = sc.nextInt(); student[in_class] = 1; } student배열에 출석번호로 초기화를 해준다. 입력되는 출석번호가 없으면 그 출석번호는 과제를 제출하지 않은 것이다. 제출하지 않은 출석번호를 ..

Algorithms/프로그래머스

[프로그래머스] '외계어 사전' - Java

PROGRAMMERS-962 행성에 불시착한 우주비행사 머쓱이는 외계행성의 언어를 공부하려고 합니다. 알파벳이 담긴 배열 spell과 외계어 사전 dic이 매개변수로 주어집니다. spell에 담긴 알파벳을 한번씩만 모두 사용한 단어가 dic에 존재한다면 1, 존재하지 않는다면 2를 return하도록 solution 함수를 완성해주세요. spell에서 주는 알파벳으로 dic에 포함되는 단어를 찾으면 되는 문제인데, 모두 한번씩은 꼭 사용해야하고, 모두 사용되어야한다는 것이다. p, o, s인 경우 sod eocd... 등에서는 찾을 수 없다. if(dic[i].contains(spell[j])) { count++; System.out.println(dic[i] + "와 일치하는 문자 " + spell[j]..

Algorithms/프로그래머스

[프로그래머스] '삼각형의 완성조건 (2)' - Java

선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다. >> 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다. 삼각형의 두 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 나머지 한 변이 될 수 있는 정수의 개수를 return하도록 solution 함수를 완성해주세요. 도형을 다루는 문제이다. 삼각형이 완성되는 조건은 가장 긴 변의 길이가 다른 두 변의 길이의 합보다 작아야하는 것이다. Try 1) int answer = 0; // 오름차순 정렬 Arrays.sort(sides); System.out.println("-----조건 1번-----"); // 1) 가장 긴 변이 주어진 두 변 중 있을 경우 // 그 값보다 같거나 작고 다른 한 변보다 크게 범위..

Algorithms/프로그래머스

[프로그래머스] '안전지대' - Java

다음 그림과 같이 지뢰가 있는 지역과 지뢰에 인접한 위, 아래, 좌, 우 대각선 칸을 모두 위험지역으로 분류합니다. 지뢰는 2차원 배열 board에 1로 표시되어 있고 board에는 지뢰가 매설 된 지역 1과, 지뢰가 없는 지역 0만 존재합니다. 지뢰가 매설된 지역의 지도 board가 매개변수로 주어질 때, 안전한 지역의 칸 수를 return하도록 solution 함수를 완성해주세요. 배열은 n * n 배열 안전지대 문제는 다른 기업들의 코테문제와 유사한 느낌의 2차원 배열을 다루는 문제로 필수적으로 알아야할 부분들이 많을 것 같았다. int answer = 0; for(int i = 0; i < board.length; i++) { for(int j = 0; j < board[i].length; j++..

Algorithms/프로그래머스

[프로그래머스] '숨어있는 숫자의 덧셈 (2)' - Java

문자열 my_string이 매개변수로 주어집니다. my_string은 소문자, 대문자, 자연수로만 구성되어있습니다. my_string안의 자연수들의 합을 return하도록 solution 함수를 완성해주세요. '숨어있는 숫자의 덧셈 (1)'과의 차이점은 1. 연속된 수를 하나의 숫자로 간주한다는 점과 (이 경우 1, 2, 34)가 검출될 경우 (1)에서의 답 10이 아닌 37이 리턴된다. 2. 문자열에 자연수가 없는 경우에는 0을 반환한다는 것이다. '숨어있는 숫자의 덧셈 (1)' 의 코드를 조금 수정하여 if(Character)를 판단하는 부분인 public static int solution(String my_string) { int answer = 0; for(int i = 0; i < my_str..

LEFT
'Algorithms' 카테고리의 글 목록 (4 Page)