1. 선택 정렬

리스트중 가장 작은 숫자를 선택하여 왼쪽부터 정렬시켜 나가는 작업을 반복하는 정렬이다.

https://namu.wiki/w/%EC%A0%95%EB%A0%AC%20%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98?from=%ED%9E%99%20%EC%A0%95%EB%A0%AC

구조화 프로그래밍의 탄생

사람이 프로그램을 보다 편하게 쓰고 읽을 수 있도록 규칙을 만들자는 흐름을 타고

‘구조화 프로그래밍'이 태어났다.

 

 

(else나 else if 없는) 어셈블리어 표현 방법

만약 oo 이면 xx를 해 라고 표현하고 싶지만 만약 oo 가 아니면 어디로 점프해 , 그리고 xx 를해 라고 뒤집어서

표현해야하기 때문에 혼란수러울수 있다.

 

 

(c언어) if else는 왜 있는 걸까?

if 문을 배웠을때는 분명 else나 else if 등과 함께 배웠을 것이다.

else나 else if 가 없으면 프로그램을 짤수 없을까??

C 언어의 표현 방법부터보자

void not_use_if(int x){
if(x <= 0) goto NOT_POSITIVE;
printf("플러스 숫자 \\n");
goto END;

NOT_POSITIVE:
	if(x >=0) goto NOT_NEGATIVE;
printf("마이너스 숫자\\n");
goto END;

NOT_NEGATIVE:
printf("제로 \\n");
END:
}

 

 

if else 사용의 장점

C 언어로 프로그래밍을 할때 else 를 사용할 필요가 없다. 대신 goto가 사용되고 있지만,

goto 기능은 ‘지정한 행으로 점프' 라는 기능이있다.

그럼 앞에있는 코드가 알기쉬웠나? 조금 복잡하다. 그렇다면 if else를 사용하면

void use_if(int x){
if(x <= 0){
	printf("플러스 숫자 \\n");
}else if(x < 0){
	printf("마이너스 숫자 \\n");
}else{
	printf(" 제로\\n");
}

조건이 참일경우와 거짓인 경우의 여러가지 케이스를 분배한다 패턴은 프로그래밍에 빈번히 사용된다.

  1. 조건이 참일때
  2. 조건이 거짓일때 (여러가지)
  3. 그렇다면 조건이 참일때 많은데이터 조건에 부합할때의 조건을 넣는다
  4. 참일때 로직에 타버리게되니
  5. 뒷부분에 타지않아도 바로 조건을 성립
  6. 조건이 참인 조건, 가장 큰영역을 포함하는 부분이면 훨씬 효율적일거같다.

우선 java의 String 에대해서 알아보자

JAVA로 개발하다보면 제일많이 쓰이는 클래스가 String  클래스이다.

 

String 이란?

String 클래스는 문자열을 다루는 클래스미여 불변하다는 특징이있다.

String 객체에 값이 초기에 할당되면 그 값은 변경되지 않는다.

 

 

String 객체 생성방법

@DisplayName("String 객체 생성방법")
    @Test
    void test1(){
        String a1 = "a";
        String a2 = new String("a");
        System.out.println("a1 = a2 : " + (a1 == a2));
    }

리터럴로 생성될경우 String 객체는 String constant pool 이란 공간에 저장이된다.

new 연산자로 생성될 경우 Heap 영역에 저장된다.

각변수 a1, a2 는 Stack 메모리에 올라가며 String constant pool 과 Heap 영역에 생성된 객체 메모리 주소값을 참조하게된다.

 

즉 변수 a1와 a2는 서로 참조하는곳이 다르기때문에 false가 나오게 된다.

오늘의 일지부분

 

1. 테이블에서 as로 별칭을 통해서 가져오지않아서 데이터를 읽어올수없었던점이다.

 

2. ==와 equal의 차이

 

3. jpql을사용해서 데이터비교하는것과 다시가져오는거 해보기

 

4. jpql과  sql문을 사용했지만 어노테이션부분이 새로웠다. (다시확인해보기)

 

5. 내가 수정했던게 과연잘한방법일까....

'프로그래밍 > 개발 용어와 개념' 카테고리의 다른 글

[개발노트] 리액트 라우팅  (0) 2022.06.16

https://kwiki.devserum.com/ko/articles/tech-articles/2021-05-31-518-consecutive-days-algorithm-challenge

 

518일동안 단 하루도 빠지지 않고 알고리즘을 풀었다.

 

kwiki.devserum.com

 

코드워즈를 사용해보려고한다.

그이유라면 이블로그에올린게 멋있었기때문이다. ㅋㅋ

 

꾸준히 할진 모르겠지만

풀고 이블로그에 계속올려보려고한다.

 

문제를 보고 틈틈히 그문제를 생각해보고 저녁에는 커밋하는방식?

 

알고리즘을 공부하는이유라면 조금더 코딩에 친숙해지고 복붙보다 직접 코딩을해보고 싶은 마음에 배우기로했다.

 

 

+ Recent posts