오늘도 코딩 테스트 연습

 

언어 스터디

 

배열

 배열 변수를 미리 선언한 후 값 목록들이 나중에 결정되는 상황이라면 다음과 같이 new 연산자를 사용해서 값 목록을 지정해주면 된다. new 연산자 바로 뒤에는 배열 변수 선언에 사용한 "타입[]"를 붙여주고 중괄호 {}에는 값들을 나열

 이방식으로 하지않으면 컴파일 에러가 난다.

String [] name;
name = new String[] {"jossi","ssijo"};

copyOfRange(arr,startidx,endidx)
이 메소드는 첫 번째 매개변수로 복사할 원본 배열을 받고, 두 번째 매개변수로 시작 인덱스, 세 번째 매개변수로 마지막 복사될 배열 인덱스+1을 받아서 원본 배열과 같은 타입의 복사된 새로운 배열을 반환해준다.

 

선택 정렬(Selection Sort)

import java.util.Arrays;
//오름차순 정렬
public class SelectionSort {
    public static void main(String[] args) {

        int []arr = {7, 5, 9, 0, 3, 1, 6, 2, 4, 8};
//데이터가 무작위로 여러 개 있다고 가정하자. 가장 작은 데이터를 선택해 맨 앞에 있는 데이터와 바꾸고, 
// 그 다음 작은 데이터를 선택해 앞에서 두 번째 데이터와 바꾸는 과정을 반복한다.
//다음은 선택 정렬을 사용하여 데이터를 오름차순으로 정렬한 코드다.
        int minIndex = 0; //가장 적은 원소의 인덱스

        for(int i=0; i < arr.length; i++){
            for(int j=i+1 ; j < arr.length; j++){
                if(arr[minIndex] > arr[j])
                    minIndex = j;
            }

            //스와프
            int tmp = arr[i];
            arr[i] = arr[minIndex];
            arr[minIndex] = tmp;
        }
        System.out.println(Arrays.toString(arr));
    }
}

 

[Algorithm] 정렬 알고리즘 (with 자바코드) (tistory.com)

'항해 99(9기) > 항해 일일' 카테고리의 다른 글

항해 11일 차  (0) 2022.09.29
항해 10일차  (0) 2022.09.28
항해 99 8일차  (0) 2022.09.26
항해6일차  (0) 2022.09.24
항해 5일차  (0) 2022.09.23

오들도 코딩테스트 연습!

 

toString 과 String.valueOf 차이

두 메소드 모두 Object의 값을 String으로 변환하지만 변경하고자 하는Object가 null인 경우 다르다.
toString()과 같은 경우 Null PointerException(NPE)을 발생시키지만 valueOf는 "null"이라는 문자열로 처리한다.
 
즉 비교해서 정리하자면
  • String.valueOf() - 파라미터가 null이면 문자열 "null"을 만들어서 반환한다.
  • toString() - 대상 값이 null이면 NPE를 발생시키고 Object에 담긴 값이 String이 아니여도 출력한다.

 

문자열 내림차순 방법

       char[] arr = s.toCharArray();
        Arrays.sort(arr);
        return new StringBuilder(new String(arr)).reverse().toString();

 

toCharArray()

toCharArray() 메소드는 문자열을 char형 배열로 바꿔준다. 반환되는 배열의 길이는 문자열의 길이와 같다.

 

public char[] toCharArray()
public class Test {
  public static void main(String[] args) {
    String str = "hello world";

    char[] arr = str.toCharArray();

    for(int i = 0; i < arr.length; i++) {
      System.out.print(arr[i] + " ");
    }
  }
}

출력

h e l l o   w o r l d

'항해 99(9기) > 항해 일일' 카테고리의 다른 글

항해 10일차  (0) 2022.09.28
항해 99 9일차  (0) 2022.09.27
항해6일차  (0) 2022.09.24
항해 5일차  (0) 2022.09.23
스파르타 99항해 4일차  (0) 2022.09.22

오늘도 코딩 테스트 연습!

 

 

Arrays.sort()는 오름차순으로 정령을 해준다.

Arrays.sort();

Colections.reverseOrder() 를 사용하면 내림차순으로 바꿔준다.

Arrays.sort(list, Collections.reverseOrder());

 

StringBuilder

자바에서 String 객체는 변경 불가능하다. 한 번 생성되면 내용을 바꿀 수 없단 뜻이다. 따라서 하나의 문자열을 다른 문자열과 연결하면 새 문자열이 생성되고, 이전 문자열은 가비지 컬렉터로 들어간다.

100만 개의 문자열을 연결해야 하는 상황이 왔다고 가정하자. 그리고 100만 개의 문자열을 추가로 생성했다고 하자.

문자열끼리 연결하는 작업 시에는 내부적으로 여러 작업이 발생하고, 기존 문자열 값의 길이에 추가된 문자열의 크기를 더한 크기의 새로운 문자열이 생성된다. 이걸 100만 번 수행해야 하니 메모리를 많이 잡아먹게 되는 건 어찌보면 그렇게 되겠구나 싶다.

이 경우 고려해볼 수 있는 것 중 하나가 이 포스팅의 주제인 StringBuilder다. Stirng은 변경 불가능한 문자열을 생성하지만 StringBuilder는 변경 가능한 문자열을 만들어 주기 때문에, String을 합치는 작업 시 하나의 대안이 될 수 있다.

 

간단한 사용법은 아래와 같다.

public class Main
{
    public static void main(String[] args)
    {
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("문자열 ").append("연결");
//        String str = stringBuilder;   // String에 StringBuilder를 그대로 넣을 순 없다. toString()을 붙여야 한다
        String str = stringBuilder.toString();
        // 두 println()은 같은 값을 출력한다
        System.out.println(stringBuilder);
        System.out.println(str);
    }

}

 

제곱근

Math.sqrt() 제곱근 루트 구하는 메서드

public class MathSqrt {
	public static void main(String[] args) throws IOException  {		
		System.out.println("9의 제곱근 : " + Math.sqrt(9));				
		System.out.println("20의 제곱근 : " + Math.sqrt(20));				
		System.out.println("50의 제곱근 : " + Math.sqrt(50));					
		System.out.println("100의 제곱근 : " + Math.sqrt(100));			
		System.out.println("NaN의 제곱근 : " + Math.sqrt(Double.NaN));	
		System.out.println("-1의 제곱근 : " + Math.sqrt(-1));
	}
}

Math.pow ^기호를 의미하는 함수로

ex --> Math.pow(2.4)-> 결과 :16

          Math.pow(밑.지수)

 

 

stream 기본 사용법

자바8부터 Stream 을 사용 할 수 있습니다.

기존에 자바 컬렉션이나 배열의 원소를 가공할떄, for문, foreach 등으로 원소 하나씩 골라내여 가공을 하였다면,

Stream 을 이용하여 람다함수형식으로 간결하고 깔끔하게 요소들의 처리가 가능g.

스트림 사용법을 간단하게 알아보겠습니다.

배열의 원소를 가공하는데 있어

map, filter, sorted 등 이 있습니다.

 

map은 요소들을 특정조건에 해당하는 값으로 변환해 줍니다.

요소들을 대,소문자 변형 등 의 작업을 하고 싶을떄 사용 가능 합니다.

 

filter는 요소들을 조건에 따라 걸러내는 작업을 해줍니다.

길이의 제한, 특정문자포함 등 의 작업을 하고 싶을때 사용 가능합니다.

 

sorted는 요소들을 정렬해주는 작업을 해줍니다.

 

요소들의 가공이 끝났다면 리턴해줄 결과를 collect 를 통해 만들어줍니다. 

 

ArrayList<string> list = new ArrayList<>(Arrays.asList("Apple","Banana","Melon","Grape","Strawberry")); System.out.println(list);

//[Apple, Banana, Melon, Grape, Strawberry]

 

소문자 대문자로 바꾸기

list.stream().map(s->s.toUpperCase());

list.stream().map(String::toUpperCase);

 

collect-리턴 결과

forEach-하나씩 가각 작업

System.out.println(list.stream().map(s->s.toUpperCase()).collect(Collectors.joining(" ")));

//APPLE BANANA MELON GRAPE STRAWBERRY

System.out.println(list.stream().map(s->s.toUpperCase()).collect(Collectors.toList()));

//[APPLE, BANANA, MELON, GRAPE, STRAWBERRY] System.out.println(list.stream().map(String::toUpperCase).collect(Collectors.toList()));

//[APPLE, BANANA, MELON, GRAPE, STRAWBERRY]

list.stream().map(String::toUpperCase).forEach(s -> System.out.println(s));

//APPLE

//BANANA

//MELON

//GRAPE

//STRAWBERRY

 

filter 는 요소를 특정 기준으로 걸러냄

list.stream().filter(t->t.length()>5)

 

길이 5이상

System.out.println(list.stream().filter(t->t.length()>5).collect(Collectors.joining(" "))); //Banana Strawberry System.out.println(list.stream().filter(t->t.length()>5).collect(Collectors.toList())); //[Banana, Strawberry]

'항해 99(9기) > 항해 일일' 카테고리의 다른 글

항해 99 9일차  (0) 2022.09.27
항해 99 8일차  (0) 2022.09.26
항해 5일차  (0) 2022.09.23
스파르타 99항해 4일차  (0) 2022.09.22
스파르타 항해 99 시작  (0) 2022.09.20

오늘부터는 주특기 별로 이제 시작한다.

코딩테스트 

 

시작 인덱스 ,인댁스

substring(0,n);

 

String a = "무궁화 삼천리 화려강산 대한사람 대한으로 길이 보전하세 ";	
//replace([기존문자],[바꿀문자])
a= a.replace("대한", "민국");	
System.out.println(a);

다음은 getOrDefault 메서드의 사용법입니다.

 

import java.util.HashMap;

public class MapGetOrDefaultEx {
	public static void main(String arg[]) {
		String [] alphabet = { "A", "B", "C" ,"A"};
		HashMap<String, Integer> hm = new HashMap<>();
		for(String key : alphabet) hm.put(key, hm.getOrDefault(key, 0) + 1);
		System.out.println("결과 : " + hm);
        	// 결과 : {A=2, B=1, C=1}
	}
}

 

원하는 문자열 자르기



String str = "Hi guys This is split example";

String[] result = str.split(" ");
String[] result2 = str.split(" ", 2);
String[] result3 = str.split(" ", 3);

System.out.println(Arrays.toString(result));
System.out.println(Arrays.toString(result2));
System.out.println(Arrays.toString(result3));

형변환 하기

Byte.parseByte();

Short.parseShort();

Integer.parseInt();

Long.parseLong();

Float.parseFloat();

Double.parseDouble();

 

charAt().

charAt()은 String타입의 문자열에서

해당 위치에 있는 문자만을 char타입으로 변환

'항해 99(9기) > 항해 일일' 카테고리의 다른 글

항해 99 9일차  (0) 2022.09.27
항해 99 8일차  (0) 2022.09.26
항해6일차  (0) 2022.09.24
스파르타 99항해 4일차  (0) 2022.09.22
스파르타 항해 99 시작  (0) 2022.09.20

전에 입력했던 것을 저장 안하고 컴퓨터를 껐는 지 다 날라갔다..ㅠㅠ

 

3일차 새벽에 프로젝트를 완성하고 각자 맞은 파트를 깃에 올려 병합했다.

 

병합후 배포

1.우선 깃에 올림

https://github.com/jossiya/youcoding

 

GitHub - jossiya/youcoding: 스파르타 코딩

스파르타 코딩. Contribute to jossiya/youcoding development by creating an account on GitHub.

github.com

2.filezila

3.AWS E2 

인스턴트 작성 후 ip 주소 받아서 

git bash 로 접속하여 셋팅 후에 nohub으로 배포 하였다

 

4.나만의 도메인 네임 얻기

가비아 사이트에 도메인을 판매하는데 500원짜리 있어서 사전 공부에 사노은 도메인 주소를 사용해서 배포를 하였따

  https://www.gabia.com

 

웹을 넘어 클라우드로. 가비아

그룹웨어부터 멀티클라우드까지 하나의 클라우드 허브

www.gabia.com

 

 

-배포 도메인 네임-

http://jossiya.shop/

 

jossi

 

jossiya.shop

 

 

 

 

'항해 99(9기) > 항해 일일' 카테고리의 다른 글

항해 99 9일차  (0) 2022.09.27
항해 99 8일차  (0) 2022.09.26
항해6일차  (0) 2022.09.24
항해 5일차  (0) 2022.09.23
스파르타 항해 99 시작  (0) 2022.09.20

 

ㅇ항해 시작 후 처음으로 팀원들과 미니 프로젝트 시작

우선 팀원들과 와이어프레임을 만들어 간단한 기능을 구현

ㅇ 그 다음 팀원이 4명이라 메인 페이지, 언어페이지, 디테일 비디오 페이지, 로그인 회원가입 페이지로 나누어 진행하기로 하였다.

 

ㅇ나는 언어 페이지별로 썸네일을 이용하여 디테일 비디오페 이지로  이동할 수 있게 만들기로 하였다.

사이드 카테고리 바

ㅇ 정렬기능을 만들었고 인기순(검색 시 상단 부터 크롤링 ), 오름차순(title), 내림차순(title) -> 만들었다.

처음에는 구글 API를 받아서 검색형식의 유튜브 영상들을 받아왔었다 하지만 여러 테스트를 진행하다가 오류가 뜨기시작....

->.확인 결과 검색 할 수 있는 할당량이 정해져있단다...(이거 될때는 완벽했는데...) 이후 팀원들과 상의를 해서 크롤링으로 하기로 결정

 

->유튜브 크롤링은 헬이었다.. 유튜브 동영상 자체가 웹페이지에 보일 때 데이타를 받아 보여주는 형식이라 파이선 bs4로는  할 수 없었다...

폭풍 구글링 후 selenium을 사용하면 된다 하여 해봤다. 

 

->테그들이 너무 많아 하나씩 복사해가며 자식 테그들 하나씩 붙여가면서 코드 작성.

되긴 하는데 또 하나의 문제 발생.. 유튜브 검색 페이지가 컨테이너들이 여러개라  컨테이너 하나로 할 경우 동영상이 3~11개 정도 밖에 안뜸....

 

->어떻게 생각을 하다가 우선 검색마다 동영상뜨는 개수가 달라서 무한 검색하면서 동영상 많이뜨는 링크를 사용하기로 결정하였다 ㅎㅎ

 

 

'항해 99(9기) > 항해 일일' 카테고리의 다른 글

항해 99 9일차  (0) 2022.09.27
항해 99 8일차  (0) 2022.09.26
항해6일차  (0) 2022.09.24
항해 5일차  (0) 2022.09.23
스파르타 99항해 4일차  (0) 2022.09.22

+ Recent posts