반응형

--<백준 1152번 :: 단어의 개수 - JAVA>--


총 두 가지 방법으로 풀었습니다.

 

1. StringTokenizer를 사용하는 방법

2. charAt을 사용하는 방법

 

다른 블로그를 보니까 대부분 StringTokenizer를 사용하셨더라고요! 당연히 StringTokenizer 클래스가 간단하죠. 그러나 알고리즘에 대해 아직까지는 노가다가 더 편한 저는... charAt으로도 해봤습니다. 막상 풀어보니 메모리와 시간은 비슷하더라고요! 위에가 charAt, 아래가 StringToknizer 입니다!

천천히 파헤쳐보겠습니다~

 

 


1. StringTokenizer를 활용한 자바 코드

import java.util.StringTokenizer;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		
		Scanner str = new Scanner(System.in);
		
		String s = str.nextLine();
		str.close();
		
		StringTokenizer st = new StringTokenizer(s, " ");
		
		System.out.println(st.countTokens());
	}
}

완전 간단하죠~? StringTokenizer가 띄어쓰기를 기준으로 단어를 분류하고, 그 분류된 단어들을 토큰이라고 합니다.

그 토큰의 개수만 출력해주면 바로 해결!

 


이번엔 charAt을 사용한 방법을 보여드리겠습니다.

 

2. charAt을 사용한 방법

import java.util.Scanner;

public class Main{
    public static void main(String[] args){
        
        Scanner input = new Scanner(System.in);
        String str;
        int cnt = 0;

        str = input.nextLine();

        for(int j = 0; j < str.length(); j ++){	//우선 공백의 개수를 먼저 세아린다
            if(str.charAt(j) == ' '){
                cnt++;
            }
        }

        if(str.charAt(0) != ' ' && str.charAt(str.length()-1) != ' '){ //첫 번째와 마지막이 공백이 아닌 경우
            cnt = cnt + 1; 
        }
        if(str.charAt(0) == ' ' && str.charAt(str.length()-1) == ' '){ //첫 번째와 마지막이 공백인 경우
            cnt = cnt - 1;
        }
        System.out.println(cnt);
        
    }
}

어떤 알고리즘인지 감이 오시나요??

 

아래 그림처럼 이해하면 쉽습니다!

 

우선 for문을 사용하여 공백의 개수를 cnt에 입력합니다.

 

그리고 

 

case1. 가장 첫 번째와 마지막이 공백이 아닌 경우 -> cnt = cnt + 1

case2. 가장 첫 번째와 마지막 중에서 하나만 공백인 경우 -> cnt 변화 없음

case3. 가장 첫 번째와 마지막이 모두 공백인 경우 -> cnt = cnt - 1

 

이렇게 예를 들어서 하면 쉽게 이해가 됩니다!

 

아직은 어려운 알고리즘은 아니어서 이렇게 노가다로 풀지만.... 코딩테스트나 프로그래머스에 나오는 문제들은 노가다로는 절대 안 풀리더라고요.. 하하  

 

코딩러들 다들 화이팅~!

 

반응형
반응형

개발 공부를 꾸준히 해야하는데... 계속 달렸다가 멈췄다가 무한반복 굴레에 빠졌다!!

얼른 악순환을 끊고 다시 공부해야지!

 

<2020 카카오 인턴십 코딩테스트 문제 - 키패드 누르기>

 

class Solution {
    //        0부터 9까지 좌표 {y,x}
    int[][] numpadPos = {
            {3,1}, //0
            {0,0}, //1
            {0,1}, //2
            {0,2}, //3
            {1,0}, //4
            {1,1}, //5
            {1,2}, //6
            {2,0}, //7
            {2,1}, //8
            {2,2}  //9
    };
    //초기 위치
    int[] leftPos = {3,0};
    int[] rightPos = {3,2};
    String hand;
    public static void main(String[] args){
        
    }
    public String solution(int[] numbers, String hand) {
        this.hand = (hand.equals("right")) ? "R" : "L";

        String answer = "";
        for (int num : numbers) {
            String Umji = pushNumber(num);
            answer += Umji;

            if(Umji.equals("L")) {leftPos = numpadPos[num]; continue;}
            if(Umji.equals("R")) {rightPos = numpadPos[num]; continue;}
        }
        return answer;
    }

    //num버튼을 누를 때 어디 손을 사용하는가
    private String pushNumber(int num) {
        if(num==1 || num==4 || num==7) return "L";
        if(num==3 || num==6 || num==9) return "R";

        // 2,5,8,0 일때 어디 손가락이 가까운가
        if(getDist(leftPos, num) > getDist(rightPos, num)) return "R";
        if(getDist(leftPos, num) < getDist(rightPos, num)) return "L";

        //같으면 손잡이
        return this.hand;
    }

    //해당 위치와 번호 위치의 거리
    private int getDist(int[] pos, int num) {
        return Math.abs(pos[0]-numpadPos[num][0]) + Math.abs(pos[1]-numpadPos[num][1]);
    }
}

사실 클론 코딩이나 다름없다. 왜냐하면 프로그래머스에 있는 답을 보고 그대로 따라적었으니까..!

그래도 클론 코딩하면서 모르는 부분이 있어서 몇 가지 찾아봤다

 

 

자바에서 "?" 연산자가 뭐였더라..?

헐.. 알고리즘 공부를 안하니까 연산자 조차 까먹은 것이다!

다시 찾아보니 if/else 관계를 나타낼 때 쓰는 연산자였다

 

예를 들면 이렇다

import java.util.*;

public class Pratice {
    public static void main(String[] args){
        int[] array = {1,2,3,5,6};

        for(int i = 0; i < array.length; i++){
            System.out.println(array[i] + "는" + (array[i] % 2 == 0 ? "짝수" : "홀수"));
            // ?를 사용하여 if/else의 문장을 확 줄였다!
        }
    }
}

 

출력 결과는

1는홀수
2는짝수
3는홀수
5는홀수
6는짝수

 

코딩 공부는 꾸준히 하자... 요즘엔 초등학생도 코딩하던데.. 대학생이 되어서야 시작한 나는 계속 달려야 한다

반응형
반응형

깃허브를 사용하다보면 레포지토리를 삭제해야하는 경우가 발생합니다. 그렇다면 어떻게 깃허브 레포지토리를 삭제할 수 있을까요? 간단하고 빠르게 파헤쳐봅시다!


1. 삭제하고자 하는 레포지토리의 <Settings>

 

 

 

2. <Settings>에서 스크롤을 쭉 아래로 내려서 <Danger Zone><Delete this repository>

3. <아이디/레포지토리 명> 따라 쓰고 'I understand~~' 클릭

 

참 쉽죠?

반응형
반응형

깃허브를 사용하다보면 레포지토리를 만들게 되죠. 아직 미완성인 프로젝트는 나만 볼 수 있도록 private, 다른 유저들과 공개하고 싶을 때는 public의 설정을 할 수 있습니다. 그 설정방법을 차근차근 알아보겠습니다.


1. 원하는 레포지토리의 <Settings>에 들어갑니다. 

 

2. <Settings>에서 화면을 쭉 내려서 <Danger Zone>에 <Change repository visibilty>를 클릭합니다.

 

3. <Make public> 또는 <Make private>를 선택하고, 아래에 빈칸에는 자신의 <닉네임/레포지토리명>을 적고 I understand를 누르면 끝.

반응형

'Github' 카테고리의 다른 글

깃허브 Repository 삭제하는 방법  (0) 2021.09.10
반응형

aws에서 EC2를 만들고 putty로 접속하기 위해서는 pem키를 ppk로 변환하여 putty로 들어가야 합니다. EC2를 만들면 마지막에 키값이 주어지는데, pem 확장자를 ppk로 변환하여 서버에 성공적으로 접속해봅시다!

 

이 글은 windows 환경에서 진행하며,

아래 과정은 aws에서 EC2를 생성하고 pem키를 받았다는 가정 하에 진행해보도록 하겠습니다. 

 


 

1. Putty 및 Puttygen 다운로드

 

우선 Putty를 다운받아야 합니다. 다운 방법은 아주 간단합니다. 그리고 putty를 다운받으면 puttygen도 같이 다운받아 지니까 putty만 다운하시면 됩니다.

 

우선 아래 putty홈페이지에 들어갑니다

 

https://www.putty.org/

 

Download PuTTY - a free SSH and telnet client for Windows

Is Bitvise affiliated with PuTTY? Bitvise is not affiliated with PuTTY. We develop our SSH Server for Windows, which is compatible with PuTTY. Many PuTTY users are therefore our users as well. From time to time, they need to find the PuTTY download link. W

www.putty.org

 

here을 클릭해줍시다

 

화면을 조금 내리면 아래와 같이 보이는데,
32bit이면 파란 동그라미를, 64bit window이면 빨간 동그라미를 설치해주세요!! 
그리고 설치과정에서는 모두 디폴트값(따로 설정 안해도)으로 하시면 됩니다

만약 내 컴퓨터가 32bit인지 64bit인지 잘 모르겠다 하시는 분은 아래 링크를 참조해주세요!

https://codingbuza.tistory.com/2

 

컴퓨터 32비트 64비트 확인하는 방법

내 컴퓨터는 32비트 일까 64비트 일까? 내 컴퓨터 - 우클릭 - 속성 32비트(x86) or 64비트(x64) 확인 참 쉽쥬?

codingbuza.tistory.com

 

 

이제 putty를 실행하고 싶다면 '윈도우 + s'를 눌러서 putty를 검색하시면 됩니다. 그리고 puttygen도 같이 나오는 것을 확인할 수 있죠?

 

이제 Puttygen을 사용하여 pem확장자를 ppk로 바꿔봅시다

 

1.  PuTTYgen을 실행합니다

 

 

2. file - Load private key - .pem 확장자가 있는 폴더 클릭 - pem키 - 확인

그런데 여기서 PuTTygen은 .ppk확장자를 기본으로 찾도록 되어있습니다. 그래서 .pem확장자가 안보일 수 있는데, 이럴 때는 위의 사진처럼 우측 하단에 목록을 눌러서 "All Files"를 클릭해주시면 됩니다.

 

쨘~ All Files를 클릭하니 .pem 확장자가 보이는 것을 볼 수 있죠?? 

이까지 하셨다면 거의 다 한겁니다!!

 

 

3. Save private key 클릭

 

 

마지막으로 .ppk 확장자를 보관할 폴더에 생성해주시면 됩니다.

완벽하게 끝내셨나요? 중간에 오류가 발생하거나 궁금한 점이 있다면 댓글에 문의해주시면 3일 안으로 답해드리겠습니다.

다들 즐거운 코딩 하세요!!

 

 

반응형
반응형

갑자기 아마존에서 청구서가 날아왔거나, 유료 서비스를 이용하게 되어서 돈을 내야 하는 경우도 있습니다.

그럴 때 내가 내야 할 금액이 얼마인지 확인하는 방법을 알아봅시다.

 

 

내 계정 옆에 화살표 클릭 -> 내 결제 대시보드

 

 

왼쪽 메뉴에 청구서

 

 

 

AWS 서비스 요금 밑에 마우스를 클릭하면 자세히 볼 수 있다

 

 

지금 저같은 경우는 Elastic IP Addresses에서 요금이 발생했죠! 이렇게 상세 내역까지 볼 수 있습니다. 프리티어를 사용하고 있는데 혹시 요금이 부과된 건 아닐까? 하는 분들은 꼭 이렇게 확인해보세요!

 

 

그리고 요금이 어느 정도 부과되면 나에게 메일로 알려주는 기능도 있습니다.

또한 인스턴스에 의해 부과되는 요금을 없애기 위한 방법도 있는데, 그 내용은 아래 글을 참고하시면 좋을 것 같습니다.

 

https://codingbuza.tistory.com/3

 

AWS에서 갑자기 청구서가 날아왔을 때 해결 방법

1. 서론 - 아마존에서 청구서가 날아왔어요 2. 프리티어를 사용했는데 사용료를 내야 하는 이유 3. EC2 인스턴스 종료 및 탄력적 ip 주소 릴리즈(제거) 4. 청구 비용 알림 설정 5. 후기 (feat. 글 다 써

codingbuza.tistory.com

 

반응형
반응형

 

1. 서론 - 아마존에서 청구서가 날아왔어요

2. 프리티어를 사용했는데 사용료를 내야 하는 이유

3. EC2 인스턴스 종료 및 탄력적 ip 주소 릴리즈(제거)

4. 청구 비용 알림 설정

5. 후기

(feat. 글 다 써놓고 자동 저장 기능 때문에 모든 것이 날아가서 다시 썼다..)


 

1. 서론 - 아마존에서 청구서가 날아왔어요

 

 

처음으로 aws를 사용하며 개인프로젝트를 하고 한 달이 지났을까, 갑자기 aws에서 메일이 왔다. 오 뭐지? 별거 아닌 거겠지 싶어서 무시했는데, 갑자기 내 통장에서 돈이 빠져나갔다. 나는 분명 프리티어를 사용했는데.... 왜지??

다행히 검색해보니까 나 같은 사람이 많았다. 그래서 안도감을 갖고(?) 원인이 무엇인지 차근차근 알아봤다. 알아보니까 생각보다 큰 문제는 아니었고, 쉽게 해결할 수 있었다. 사용료는 매우 소액이 빠져나갔지만, 이렇게 나가는 돈을 그냥 놔둘 순 없기 때문에 그 방법을 차근차근 알아보자.

 

 


2. 프리티어를 사용했는데 사용료를 내야 하는 이유

 

aws를 처음 사용해본 나는 EC2와 탄력적(Elastic) IP를 사용하여 서버를 구축했었다. 분명히 이 두 가지는 무료였는데, 왜 갑자기 사용료가 청구되었을까? 일단 AWS에서 EC2 클라우드와 탄력적 IP는 무료로 제공해준다. 그러나 사용하지 않으면 낭비가 되는 것으로 간주한다. AWS에서는 사용자에게 무료로 제공해줬는데 사용자가 낭비를 하고 있다면 아마존에서도 손해보는 부분이 있는 것이다.(참고로 아마존 회장 제프 베조스의 회사 경영방침도 매우 짠순이(?)다) 그래서 EC2를 삭제하고 탄력적 IP를 그냥 놔두면 그만큼 사용료가 청구되는 것이다.

 

그렇다면 어떻게 해야지 안전하게 인스턴스와 탄력적 ip를 종료할 수 있을까??

 

천천히 알아보자! 

 

그대로 따라 하시면 되니까 걱정하지 마세요!

 


3. EC2 인스턴스 종료 및 탄력적 ip 주소 릴리즈(제거)

 

전체 순서는 이렇습니다.

인스턴스 종료 -> 탄력적 ip 릴리즈 -> 보안 정책 종료

 

인스턴스 종료는 다음과 같이 해주면 됩니다

EC2 -> 인스턴스 -> 인스턴스 체크 -> 인스턴스 상태 -> 인스턴스 종료

 

저는 현재 인스턴스가 없기 때문에 목록에서 보이지 않습니다! 인스턴스가 있다면 인스턴스를 체크 후 종료해주세요!

여기서 참고할 점은 '인스턴스 종료 = 인스턴스 제거'로 보시면 됩니다. 인스턴스는 종료하면 다시 시작이 안되기 때문입니다. 그리고 인스턴스가 '종료됨'이라고 뜬 후 24시간 뒤에 목록에서 삭제되니 참고해주세요!

 

그다음 탄력적 IP를 릴리즈 해야 합니다. EC2에 연결되어있던 IP를 놓아줌으로써 완전히 사용 종료하는 것이죠! 여기서 탄력적 IP를 릴리즈 하지 않았다면 요금이 부과됩니다. 앞에서 말씀드렸듯이 아마존 입장에서는 사용자가 낭비하는 것으로 보기 때문이죠

 

 

탄력적 IP 릴리즈 과정도 쉽습니다.

탄력적 IP -> 작업 -> 탄력적 IP 주소 릴리즈

 

 

만약 보안 정책까지 설정하셨다면 그것도 제거해주셔야 합니다.

보안그룹 -> 보안그룹선택 -> 작업 -> 삭제

 

이렇게 하면 모든 게 끄읕~~~~~~~~~~~~.....이긴 하나, 일단 이 글을 보고 계신다면 소액의 금액이 이미 청구되셨을 가능성이 높겠죠?? 지금 내가 내야 할 돈이 얼마인지 확인해봅시다. 그리고 aws를 계속 사용한다면 이러한 부분에 예민하실 텐데요, 청구 금액 알림설정 또한 같이 해봅시다

 


4. 청구 비용 알림 설정

 

나의 사용료가 x달러 이상되면 메일로 알려주도록 하는 서비스입니다. 무료이며 간단하게 설정할 수 있으니 천천히 따라오시길 바랍니다!

 

내 계정 오른쪽 화살표 클릭 -> 내 결제 대시보드 -> Budgets -> 예산작성 

 

 

 

 

 

 

여기까지 잘 따라오셨나요?? 거의 다 왔습니다!! 조금만 더 힘내요!

 

 

 

비용 예상 - 권장 -> 예산금액입력(달러로 환산됩니다) -> 세부 정보에 알림 문구 입력

 

 

 

 

 

 

예산 금액이 입력되었다면 아래 그림처럼 '알림 임계값이 생성되지 않았습니다'라는 문구가 뜹니다. 우측에 '알림 임계값 추가'를 눌러줍시다.

 

임계값을 80%로 맞추고, 아래에 알림을 받을 이메일을 적어줍니다. 자주 사용하는 이메일이면 좋겠죠?

 

성공하셨다면 아래처럼 예산이 하나 생성됩니다! 이제 aws에서 비용이 청구되는 것에 대해 크게 걱정할 필요는 없겠죠?

 

 

 


5. 후기

 

솔직히 처음 aws에서 메일을 받았을 때 깜짝 놀랬습니다... 다른 후기를 찾아보니 실제로 해킹당해서 비트코인 채굴장에서 자기 아이디가 이용된 경우도 있더라구요.. 비용도 엄청나게 청구되었다고 하는데, 다행히 aws korea에서 해결해줬답니다! 아마존에서도 이런 경우가 많았는지, 두어번 정도는 무료로 해결해준다고 하네요! 그래도 베스트 케이스는 이런 일이 벌어나지 않도록 하는게 좋겠죠??

 

실제 네카라쿠배에서도 aws를 사용하며, 벤처기업에서도 사용하는 서비스이기 때문에 개발자를 생각하시는 분은 잘 사용 못해도 어느 정도는 사용할 줄 알아야 한다고 생각합니다. 물론 저도 이제 막 걸음마를 뗀 사람이라서...

세상의 모든 개발자 분들 파이팅입니다!

 

 

만약 내가 내야하는 요금의 상세 내역을 확인하고 싶다면?

https://codingbuza.tistory.com/4

 

AWS 내가 내야 할 요금 확인하는 방법

갑자기 아마존에서 청구서가 날아왔거나, 유료 서비스를 이용하게 되어서 돈을 내야 하는 경우도 있습니다. 그럴 때 내가 내야 할 금액이 얼마인지 확인하는 방법을 알아봅시다. 내 계정 옆에

codingbuza.tistory.com

 

반응형
반응형
내 컴퓨터는 32비트 일까 64비트 일까?

 

내 컴퓨터 - 우클릭 - 속성

 

 

32비트(x86) or 64비트(x64) 확인

참 쉽쥬?

반응형
반응형

과거에는 java를 다루기 위해 eclipse, VsCode를 많이 사용했었다. 최근에는 더 다양한 언어를 한꺼번에 쉽고 간단하게 다룰 수 있도록 나온 Intellij를 많이 사용하는 추세이다. 또한 Intellij는 Android Studio와 흡사하며(Android Studio가 Intellij와 흡사하다고 표현하는 게 맞을 듯) Github에 push and commit도 간단하게 할 수 있다는 장점이 있다.

우선 Intellij에 Java 세팅을 하기 전에 java JDK를 다운받고 환경변수를 설정해보자.

 

 

Java jdk1.8 다운로드 하기

출처 : oracle

 

 

우선 jdk 1.8버젼을 다운로드 해보겠습니다.

아래 링크로 들어가셔서 스크롤을 내리면 아래 이미지처럼 나오는데, 내 컴퓨터의 OS에 맞는 환경의 jdk를 다운받아주시면 됩니다.

https://www.oracle.com/java/technologies/javase/javase-jdk8-download.html

 

 

잘 모르시겠다면 윈도우(맥북아님)를 쓰실 가능성이 높기 때문에 가장 아래에 있는 Windows x64를 다운받아 주시면 됩니다.

 

 

여기서 Windows x86은 32비트, Windows x64는 65비트를 말합니다. 자신의 컴퓨터가 몇 비트인지 확인하고 싶다면 아래 링크를 확인해주시기 바랍니다.

https://codingbuza.tistory.com/2

 

컴퓨터 32비트 64비트 확인하는 방법

내 컴퓨터는 32비트 일까 64비트 일까? 내 컴퓨터 - 우클릭 - 속성 32비트(x86) or 64비트(x64) 확인 참 쉽쥬?

codingbuza.tistory.com

 

 

다운로드가 끝났다면 jdk가 잘 다운로드되었는지 확인하는 과정이 필요합니다. 우선 명령프롬포트(cmd)를 열어줍니다. 여는 방법은 <윈도우키 + S> 혹은 <윈도우키 + R>을 누르고 cmd라고 검색한 다음 엔터를 눌러주시면 됩니다.

자, 명령 프롬포트를 실행했습니다.

 

 

실행했다면 아래와 같이 <java -version>라고 입력합니다.

 

java -version

 

그러면 아래와 같이 현재 설치된 jdk의 정보가 나옵니다. 아래처럼 뜨면 성공입니다! 여기서는 제가 1.8버젼을 다운받았기 때문에 1.8이라고 뜨는 겁니다.

 

이렇게 java jdk의 설치는 끝났습니다. 이제 환경변수 설정을 해봅시다.

 

 

환경 변수 설정 하기

    윈도우키 + S -> 환경 변수

 

<윈도우 + S> 를 누른 뒤에 <환경 변수>라고 검색하면 아래와 같이 메뉴가 나옵니다. 시스템 환경 변수 편집을 눌러줍시다. 여기서 주의할 점은 <환경변수>에서 띄어쓰기를 반드시 해주셔야 합니다.

 

 

<시스템 속성>에서 가장 아래에 보이는 환경 변수를 눌러줍니다.

  시스템 변수 - 새로 만들기

 

 

JAVA_HOME

 

변수 이름은 <JAVA_HOME>으로 지정하고 변수 값은 디렉터리 찾아보기를 눌러서 jdk 파일이 있는 곳을 지정해줍니다.

 

 

 

Path 편집

 

 

 

%JAVA_HOME%\bin 추가

이렇게 해서 환경변수 설정도 모두 끝났습니다!! 이젠 Intellij의 java 초기 설정을 해봅시다.

 

 

인텔리제이 다운로드 및 실행

우선 인텔리제이를 다운받기 위해서는 아래 링크로 들어가서 다운받으면 됩니다. 아래 링크는 인텔리제이 공식 홈페이지 입니다.

www.jetbrains.com

 

JetBrains: Essential tools for software developers and teams

JetBrains is a cutting-edge software vendor specializing in the creation of intelligent development tools, including IntelliJ IDEA – the leading Java IDE, and the Kotlin programming language.

www.jetbrains.com

 

 

인텔리제이를 다운받으셨다면 실행하고 프로젝트를 하나 만듭니다.

 

 

    File - Project Structure

 

 

 

처음 시작할 때는 Project SDK에 jdk가 잡혀있지 않은 경우가 있습니다. 이럴 때 옆에 Edit을 눌러서 jdk가 있는 폴더를 지정해주면 됩니다.

그리고 SDKs

그리고 SDKs에 jdk 1.8 version이 잘 들어가 있는지 확인합니다.

이렇게 되어있다면 성공입니다.

 

 

개발하는 것도 중요하지만 이렇게 개발 환경을 구축하는 것도 중요합니다. 처음에 잘해놓아야 다음번에 크게 신경 쓸 것이 없으니까요... 첫 단추를 잘못 꿰면 나중에 버젼이 안 맞아서 전부 다 갈아엎는 경우도 생깁니다. 모두 잘 풀리셨길 바라며 질문이 있으시면 언제든지 댓글 혹은 xhxkf0202@naver.com으로 보내주세요

 

감사합니다.

반응형

+ Recent posts