import static java.lang.System.in;//in cannot find Symbol error

class Prime{
    void checkPrime(int... nums){//가변인자
        for(int num : nums){
            if(isPrime(num)){
                System.out.print(num+" ");//숫자출력 & 공백
            }
        }
        System.out.println("");//줄바꿈
    }

    boolean isPrime(int num){
        if(num < 2){
            return false;
        }
        boolean prime = true;
        for(int i = 2; i < num; i++){
            if(num % i == 0){//1과 자기 자신을 뺀 나머지 숫자로 나누어지면 소수가 아님
                prime = false;
                break;
            }
        }
        return prime;        
    }
}

'개발 > CodingTest' 카테고리의 다른 글

Hacckerrank - The Hurdle Race  (0) 2020.06.25
Hacckerrank - Halloween Sale  (0) 2020.06.25
프로그래머스 - 기능개발  (0) 2020.06.03
프로그래머스 - 탑  (0) 2020.06.03
HackerRank - Anagrams  (0) 2020.06.02
Posted by Lumasca
,

 

import java.util.*;

class Solution {
    public int[] solution(int[] progresses, int[] speeds) {
        
        Queue<Integer> q = new LinkedList();
        
        //남은 작업 일수
        for(int i =0; i<progresses.length; i++){
            int re = 100 - progresses[i];
            int s = speeds[i];
            int d = re / s;
            if(re % s != 0){
                d++;
            }        
            q.offer(d);
        }
        
        
        int[] tmp = new int[q.size()];
        int sd = 0;//배포일
        int count = 0;
        int idx = 0;
        //작업 순서대로 배포날짜를 체크
        while(q.peek() != null){
            int dd = q.poll();
            
            if(sd == 0){
                sd = dd;
                tmp[idx] = ++count;
                continue;
            }
            
            if(sd >= dd){//후행작업의 배포가능날짜가 작으면 현재 작업과 같이 배포(동시배포 개수 증가)               
                tmp[idx] = ++count;
            }else{//후행작업의 배포가능날짜가 크면 늦게 배포(동시 배포 개수 초기화)
                idx++;
                count = 0;
                sd = dd;
                tmp[idx] = ++count;
            }
            
        }
        
        int[] answer = new int[idx+1];
        for(int i =0; i<answer.length; i++){
            answer[i] = tmp[i];
        }
        
        return answer;
    }
}

'개발 > CodingTest' 카테고리의 다른 글

Hacckerrank - Halloween Sale  (0) 2020.06.25
Hackerrank - Prime Checker  (0) 2020.06.05
프로그래머스 - 탑  (0) 2020.06.03
HackerRank - Anagrams  (0) 2020.06.02
HackerRank - Counting Valley  (0) 2020.06.01
Posted by Lumasca
,

이중 for는 맘에 안들지만 ..

스택을 어떻게 활용하는 걸까?

import java.util.*;
class Solution {
    public int[] solution(int[] heights) {
        
        int len = heights.length;
        int[] answer = new int[len];
        
        //레이저가 왼쪽으로 발사하니 오른쪽 탑부터..
        for(int i = len-1; i > 0 ; i--){
            boolean recv = false;
            
            for(int j=i-1; j>=0; j-- ){
                if(heights[i] < heights[j]){//현재 탑 높이보다 높으면 수신탑 기록
                    answer[i] = j+1;//탑번호는 1부터 시작하니 더해주고
                    recv = true;
                    break;
                }
            }
            if(!recv){
                answer[i] = 0;
            }
        }
        //System.out.println("result="+Arrays.toString(answer));
        return answer;
    }
}

 

'개발 > CodingTest' 카테고리의 다른 글

Hacckerrank - Halloween Sale  (0) 2020.06.25
Hackerrank - Prime Checker  (0) 2020.06.05
프로그래머스 - 기능개발  (0) 2020.06.03
HackerRank - Anagrams  (0) 2020.06.02
HackerRank - Counting Valley  (0) 2020.06.01
Posted by Lumasca
,

 

 

static boolean isAnagram(String a, String b) {
        // Complete the function
        //대소문자 구분안함
        a = a.toUpperCase();
        b = b.toUpperCase();
        int alen = a.length();
        int blen = b.length();
        //길이가 다르면 아나그램이 아니다
        if(alen != blen){
            return false;
        }
        
        char[] arrA = a.toCharArray();
        //a문자열에 있는 문자를 하나씩 탐색하면서 b문자열에서 제거한다.
        for(char ch : arrA){            
            b = b.replaceFirst(Character.toString(ch), "");
            //System.out.println("ch="+ch+",b="+b);
        }
        
        //b문자열이 전부 제거되었으면 아나그램 아니면 아나그램 아님
        if(b.isEmpty()) return true;
        else return false;
    }

'개발 > CodingTest' 카테고리의 다른 글

Hacckerrank - Halloween Sale  (0) 2020.06.25
Hackerrank - Prime Checker  (0) 2020.06.05
프로그래머스 - 기능개발  (0) 2020.06.03
프로그래머스 - 탑  (0) 2020.06.03
HackerRank - Counting Valley  (0) 2020.06.01
Posted by Lumasca
,

 

// Complete the countingValleys function below.
    static int countingValleys(int n, String s) {
        int seaLevel = 0;//높이
        int valley = 0;
        boolean isValley = false;
        for(int i = 0; i< n;i++){
            char ch = s.charAt(i);
            if(ch == 'U'){//올라가면 높이증가
                seaLevel++;
            }else if(ch == 'D'){//내려가면 높이 감소
                seaLevel--;
            }
            if(seaLevel == 0){//높이가 0에 도달하면 
                if(isValley){//valley인 경우만 카운팅
                    valley++;    
                }            
            }else if(seaLevel > 0){//높이가 0보다 크면 valley가 아님
                isValley = false;
            }else if(seaLevel < 0){//높이가 0보다 작으면 valley
                isValley = true;
            }
        }
        return valley;
    }

 

'개발 > CodingTest' 카테고리의 다른 글

Hacckerrank - Halloween Sale  (0) 2020.06.25
Hackerrank - Prime Checker  (0) 2020.06.05
프로그래머스 - 기능개발  (0) 2020.06.03
프로그래머스 - 탑  (0) 2020.06.03
HackerRank - Anagrams  (0) 2020.06.02
Posted by Lumasca
,

 

컴퓨터 과학(Computer Science)에 대한 개념,  그리고 어떤 영역들이 있는지..

 

그동안 학습한 지식들의 기초지식을 정리하여 전자책을 만들었다.

 

분량이 겨우 50페이지 정도인데 처음 전자책을 만드느라 생각보다 힘들고 오래걸렸다.

 

 

https://www.otwojob.com/product/PRBjSotFYygoap5wBvyv

 

[IT개발 - 기타] 개발 입문자를 위한 컴퓨터 사이언스 기초편 전자책(PDF) - 재능마켓 오투잡 (otwojob

판매가격:5,000원, *이 책은 컴퓨터 과학(Computer Science)에서 핵심적인 부분을 정리했습니다.-컴퓨터 과학에서 컴퓨터구조, 운영체제, 소프트웨어공학, 데이터베이스, 네트워크, 자료구조, 알고리즘

www.otwojob.com

 

Posted by Lumasca
,

1.Gradle 설정

1)Project의 build.gradle 파일에 아래 처럼 추가한다.

//Firebase Crashlytics 주석이 달린 부분이다.

 

buildscript {
    ext.kotlin_version = '1.3.71'
    repositories {
        google()
        jcenter()
        maven{url 'https://maven.fabric.io/public'}//Firebase Crashlytics
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.3'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        classpath 'io.fabric.tools:gradle:1.+'//Firebase Crashlytics
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven{url 'https://maven.fabric.io/public'}//Firebase Crashlytics
    }
}

 

2)app 모듈의 build.gradle 파일에 다음과 같이 구성한다.

 

apply plugin: 'io.fabric'//Firebase Crashlytics


dependencies{
...
//Firebase Crashlytics
implementation('com.crashlytics.sdk.android:crashlytics:2.10.1@aar') {
        transitive = true;
    }
}

 

작성이 끝나면 Sync Now를 해준다.

 

2.소스코드

 

Main Activity에 작성할 내용이다.

 

1)아래 두 패키지를 임포트 한다.

 

import com.crashlytics.android.Crashlytics;
import io.fabric.sdk.android.Fabric;

 

그리고 onCreate 메소드에서 초기화 코드를 추가한다.

 

Fabric.with(this, new Crashlytics());

 

3.옵션

추가로 플래그를 설정해 SDK를 사용설정하려면

strings.xml에서 다음 문자열을 추가한다.

<string name="com.crashlytics.useFirebaseAppId">true</string>

 

그리고 app 모듈 루트에 fabric.properties 파일을 생성하고 아래 내용을 입력한다.

USE_FIREBASE_APP_ID=true

 

 

Posted by Lumasca
,

반쪽짜리 원 모양이 필요할때가 있다.

drawable 에 xml 파일을 생성하고 아래를 참고해서 작성한다.

 

width, height 반원의 방향에 따라 적절히 크기를 조절

 

<corners> 태그에서 

topLeftRadius 왼쪽 상단 둥글게

topRightRadius 오른쪽 상단 둥글게

bottomLeftRadius 왼쪽 하단 둥글게

bottomRightRadius 오른쪽 하단 둥글게

 

수정하면서 모양을 보면 쉽게 할 수 있다.

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="@color/red"/>
    <size
        android:width="5dp"
        android:height="10dp"/>
    <corners
        android:bottomRightRadius="20dp"
        android:topRightRadius="20dp"/>
</shape>

 

 

Posted by Lumasca
,