백준 1181번 (정렬)
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class problem100 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int size = in.nextInt();
String [] arr = new String[size];
/**
* 개행 버림 (Scanner로 입력받을시
* nextInt()로 정수를 받은뒤 nextLine()을 쓰면 개행에 저장됨,
* (개행을 한번 버려야 정상적으로 작동)
*/
in.nextLine();
for(int i = 0; i<size; i++) {
arr[i] = in.nextLine();
}
Arrays.sort(arr,new Comparator<String>() {
public int compare(String s1, String s2) {
// 정수형으로 비교, compare은기본적으로 정수형으로 비교해줘야된다.
// 사전순으로 출력 (아스키 값)
if(s1.length() == s2.length()) {
return s1.compareTo(s2);
}
else {
// 단어 길이순으로 정렬
return Integer.compare(s1.length(), s2.length());
}
}
});
// 길이 비교가 끝난 배열 첫번째를 출력
System.out.println(arr[0]);
// 앞에있는 배열의 값이랑 비교 (중복 되지 않는 단어만 출력)
for(int i = 1; i < size; i++) {
if(!(arr[i].equals(arr[i-1]))) {
System.out.println(arr[i]);
}
}
}
}
프로그래머스 12977번 (LEVEL 2)
public class Solution {
public int solution(int n) {
int ans = 0;
// 최대한 순간이동 사용
// 5000 2500 1250 625 (2의 제곱으로 나눠짐)
while(n !=0){
if(n % 2 == 0){
n /=2;
}else{
n--;
ans++;
}
}
return ans;
}
}
프로그래머스 (LEVEL 1)
import java.util.*;
class Solution {
// 소수 체크
public boolean check(int num){
// num = 7, num = 9 (3에서 걸러진다.)
for(int i = 2; i < num; i++){
if(num % i == 0){
return false;
}
}
return true;
}
public int solution(int[] nums) {
int answer = 0;
// 1 2 3 4
// length 3
// 소수 7 (반례 9)
for(int i = 0 ; i < nums.length; i++){
int sum = 0;
for(int j = i+1; j < nums.length; j++){
for(int k = j+1; k < nums.length; k++){
sum = nums[i] + nums[j] + nums[k];
if(check(sum)){
answer++;
}
}
}
}
return answer;
}
}
프로그래머스 (LEVEL 2)
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
// skill_trees의 배열에서 string 배열을 하나씩 꺼낸다.
for(String skill_tree : skill_trees){
String temp = skill_tree;
for(int i = 0 ; i < skill_tree.length(); i++){
// C B A D F 방식처럼 substring
String a = skill_tree.substring(i,i+1);
if(!(skill.contains(a))){
// 필수 스킬이 아닐시 공백처리
temp = temp.replace(a, "");
}
}
// 처음에는 이해가 가지않는 부분이였다.
// index의 번호를 반환해준다.
// (입력된 skill이랑 temp랑 같은 문자임으로 0을 반환)
if(skill.indexOf(temp) == 0) answer++;
}
return answer;
}
}