무작위로 K 개의 수 뽑기
import java.util.*;
class Solution {
public int[] solution(int[] arr, int k) {
int[] answer = new int[k];
Arrays.fill(answer, -1);
answer[0] = arr[0];
int count = 1;
A: for(int i = 1; i < arr.length; i++) {
if (arr[i-1] != arr[i]) {
for(int j = 0; j<answer.length;j++) {
if (arr[i] == answer[j]){
continue A;
}
}
answer[count] = arr[i];
if (count == k - 1) {
break;
}
count++;
}
}
return answer;
}
}
배열 원소의 길이
class Solution {
public int[] solution(String[] strlist) {
int[] answer = new int[strlist.length];
int j = 0;
for(String s : strlist) {
int i = s.length();
answer[j] = i;
j++;
}
return answer;
}
}
피자 나눠 먹기 (3)
class Solution {
public int solution(int slice, int n) {
int answer = 0;
if (n % slice != 0) {
answer = n / slice + 1;
} else {
answer = n / slice;
}
return answer;
}
}
제곱 수 판별하기
class Solution {
public int solution(int n) {
int answer = 2;
for(int i = 1; i <= 1000; i++) {
if (i * i == n) {
answer = 1;
}
}
return answer;
}
}
그냥 모든 경우의 수를 돌려보았는데 더 좋은 방법 있으면 알려주세요.
삼각형의 완성조건 (1)
import java.util.*;
class Solution {
public int solution(int[] sides) {
int answer = 2;
Arrays.sort(sides); // sides 배열을 정렬
for(int i : sides) {
if (sides[0] + sides[1] > sides[2]) {
answer = 1;
}
}
return answer;
}
}
피자 나눠 먹기 (1)
class Solution {
public int solution(int n) {
int answer = 0;
if (n % 7 != 0) {
answer = n / 7 + 1;
} else {
answer = n / 7;
}
return answer;
}
}
짝수 홀수 개수
class Solution {
public int[] solution(int[] num_list) {
int[] answer = new int[2];
for (int i : num_list){
if (i % 2 == 0) {
answer[0]++;
} else {
answer[1]++;
}
}
return answer;
}
}
편지
class Solution {
public int solution(String message) {
int answer = message.length() * 2;
return answer;
}
}
문자열 뒤집기
class Solution {
public String solution(String my_string) {
String answer = "";
for(int i = my_string.length() - 1; i >= 0; i--) {
answer += my_string.charAt(i);
}
return answer;
}
}
배열 뒤집기
import java.util.*;
class Solution {
public int[] solution(int[] num_list) {
int[] answer = new int[num_list.length];
int j = num_list.length - 1;
for (int i = 0; i < answer.length; i++) {
answer[i] = num_list[j];
j--;
}
return answer;
}
}
머쓱이보다 키 큰 사람
class Solution {
public int solution(int[] array, int height) {
int answer = 0;
for(int i : array) {
if (i > height) {
answer++;
}
}
return answer;
}
}
[1차] 비밀지도
class Solution {
public String[] solution(int n, int[] arr1, int[] arr2) {
String[] answer = new String[n]; // 정답 배열 만들기
String[] temp = new String[n]; // 임시 배열 만들기
for(int i = 0; i < answer.length;i++) { // 정답 배열 초기화, null 값 제거
answer[i] = "";
}
for(int i = 0;i < n;i++) { // 임시 배열에 arr1, arr2 값의 비트 연산 값을 2 진법으로 저장
temp[i] = Integer.toBinaryString(arr1[i]|arr2[i]);
}
// 주석 부분은 밑 for 문으로 대체 가능
/* for(int i = 0; i < n;i++) { // 배열 크기만큼 반복
for(int j = 0; j < temp[i].length(); j++) { // temp 배열에 들어있는 문자열 길이만큼 반복
if (temp[i].length() < n) { // 2 진법이 짧은 경우, ex) 011111 -> 11111 로 저장
String a = "";
for (int k = temp[i].length(); k < n; k++) {
a += "0"; // a 값에 "0" 을 저장하여
}
temp[i] = a.concat(temp[i]); // temp[i] 앞에 이어 붙여줌
}
if (temp[i].charAt(j) == '1') {
answer[i] += "#"; // temp[i].charAt(j) 값이 1 이면 "#"
} else {
answer[i] += " "; // // temp[i].charAt(j) 값이 1 이 아니면 " " 추가
}
}
} */
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (temp[i].length() < n) {
temp[i] = "0".concat(temp[i]); // temp[i] 의 길이가 짧은 만큼 앞에 "0" 을 이어줌
}
}
answer[i] = temp[i].replaceAll(String.valueOf(1), "#").replaceAll(String.valueOf(0), " ");
// answer[i] = temp[i].replaceAll("1", "#").replaceAll(String.valueOf(0), " "); 로도 대체 가능
} // temp[i] 의 값을 전부 교체
return answer;
}
}
중앙값 구하기
class Solution {
public int solution(int[] array) {
int answer = 0;
for (int i = 0; i < array.length;i++) {
for(int j = 1; j < array.length - i; j++) {
if (array[j - 1] > array[j]) {
int temp = array[j - 1];
array[j - 1] = array[j];
array[j] = temp;
}
}
}
answer = array[array.length / 2];
return answer;
}
}
순서쌍의 개수
class Solution {
public int solution(int n) {
int answer = 0;
for(int i = 1 ; i <= n; i++) {
if (n % i == 0) {
answer++;
}
}
return answer;
}
}
배열 자르기
class Solution {
public int[] solution(int[] numbers, int num1, int num2) {
int[] answer = {};
answer = new int[num2 - num1 + 1];
for(int i = 0; num1 <= num2; num1++, i++) {
answer[i] = numbers[num1];
}
return answer;
}
}
배열 두 배 만들기
class Solution {
public int[] solution(int[] numbers) {
int[] answer = new int[numbers.length];
int temp = 0;
for(int i : numbers){
answer[temp] = i * 2;
temp++;
}
return answer;
}
}
옷가게 할인 받기
class Solution {
public int solution(int price) {
int answer = 0;
if (price >= 500000) {
answer = (price / 10) * 8;
} else if (price >= 300000) {
answer = price / 10 * 9;
} else if (price >= 100000) {
answer = (int) (price * 0.95);
} else {
answer = price;
}
return answer;
}
}
문자열 안에 문자열
class Solution {
public int solution(String str1, String str2) {
int answer = str1.contains(str2) ? 1 : 2;
return answer;
}
}
아이스 아메리카노
class Solution {
public int[] solution(int money) {
int[] answer = new int[2];
answer[0] = money / 5500;
answer[1] = money % 5500;
return answer;
}
}
배열의 유사도
class Solution {
public int solution(String[] s1, String[] s2) {
int answer = 0;
for(int i = 0; i < s1.length; i++) {
for (int j = 0; j < s2.length; j++) {
if (s1[i].equals(s2[j])){
answer++;
}
}
}
return answer;
}
}
모음 제거
class Solution {
public String solution(String my_string) {
String answer = "";
for(int i = 0; i < my_string.length();i++) {
if (my_string.charAt(i) != 'a' && my_string.charAt(i) != 'e'
&& my_string.charAt(i) != 'i' && my_string.charAt(i) != 'o'
&& my_string.charAt(i) != 'u') {
answer += Character.toString(my_string.charAt(i));
}
}
return answer;
}
}
더 쉬운 모음 제거.. 방법,,,
해놓고 까먹네 계속
class Solution {
public String solution(String my_string) {
String answer = "";
answer = my_string.replaceAll("[aeiou]", "");
return answer;
}
}
바로 활용할 수 있는 문제가 나옴
특정 문자 제거하기
class Solution {
public String solution(String my_string, String letter) {
String answer = "";
answer = my_string.replaceAll(letter, "");
return answer;
}
}
최댓값 만들기(1)
import java.util.*;
class Solution {
public int solution(int[] numbers) {
int answer = 0;
Arrays.sort(numbers);
answer = numbers[numbers.length - 1] * numbers[numbers.length - 2];
return answer;
}
}
점의 위치 구하기
class Solution {
public int solution(int[] dot) {
int answer = 0;
if (dot[0] > 0) {
if (dot[1] > 0) answer = 1;
else answer = 4;
} else {
if (dot[1] > 0) answer = 2;
else answer = 3;
}
return answer;
}
}
문자 반복 출력하기
class Solution {
public String solution(String my_string, int n) {
String answer = "";
for(int i = 0; i < my_string.length(); i++) {
for(int j = 0; j < n; j++) {
answer += my_string.charAt(i);
}
}
return answer;
}
}
숨어있는 숫자의 덧셈 (1)
class Solution {
public int solution(String my_string) {
int answer = 0;
for(int i = 0; i < my_string.length(); i++) {
if (Character.isDigit(my_string.charAt(i))) {
answer += my_string.charAt(i) - 48;
}
}
return answer;
}
}
자릿수 더하기
class Solution {
public int solution(int n) {
int answer = 0;
String s = Integer.toString(n);
for(int i = 0; i < s.length(); i++) {
answer += s.charAt(i) - '0';
}
return answer;
}
}
짝수는 싫어요
class Solution {
public int[] solution(int n) {
int[] answer = {};
int temp = 1;
int arr;
if (n % 2 != 0) {
arr = n / 2 + 1;
} else {
arr = n / 2;
}
answer = new int[arr];
for(int i = 0; i < arr; i++) {
answer[i] = temp;
temp += 2;
}
return answer;
}
}
'혼자 코딩 공부하기 > 프로그래머스 코딩테스트' 카테고리의 다른 글
231218 프로그래머스 0단계 풀기 (0) | 2023.12.18 |
---|---|
231216 프로그래머스 자바 0단계 다 풀어보기 (0) | 2023.12.16 |
231214 프로그래머스 기초 트레이닝 (0) | 2023.12.14 |
231213 코딩테스트 풀기 (0) | 2023.12.13 |
231211 프로그래머스 코딩테스트 (0) | 2023.12.11 |