99클럽 코테 스터디 6일차 TIL + 20240727

Yellta·2024년 7월 27일
0

TIL

목록 보기
40/95

항해 오늘의 코테 문제 풀이

1. 웹 브라우저의 요청과 응답

설명

요청

  • 사용자가 URL요청한다.(링크를 클릭한다.)
    즉 HTTP서버에 요청을 보낸다.

  • 요청에는 HTTP 메서드(GET,POST 등등) 헤더, 본문 등이 표함된다.

응답

  • 서버는 요청을 처리하고 HTTP응답을 브라우저에 보낸다.
  • 응답은 상태코드, 헤더, 본문을 포함한다.

폼을 제출한 후 서버를 바로 종료하면 응답을 받지 못하는 경우가 생길 수도 있다
응답이 완료될 떄 까지 브라우저를 유지해야한다.

2. 비트연산자란?

설명

이진수로 표현된 데이터에 대한 연산을 수행한다.

AND &

0011 & 0001 = 0001

OR |

0001 | 0011 = 0011

XOR ^

다를 때 1이 된다.
0101 ^ 0011 = 0110

NOT ~

비트 반전
0101~ = 1010

<<

왼쪽으로 부호비트를 이동시킨다.

int a=5 // 0101
int c = a<<1 // 1010(왼쪽으로 한 칸이동)

>>

부호비트는 유지하고 오른쪽으로 이동한다.

int a = 5 //0101
int c = a>>1 //0010

부호없는 >>>

비트를 오른쪽으로 이동하고 빈칸을 0으로 메꾼다.

int a = -5;  // 11111111111111111111111111111011
int c = a >>> 1;  // 01111111111111111111111111111101 (2147483645)

3. Java HashMap을 정렬하는 방법

설명

1. Map.Entry<K,V>를 리스트로 반환한다.


        // Map.Entry 리스트로 변환
        List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());

2. Compare함수를 구현해서 값으로 비교한다.


        // 값으로 정렬 collections하면서 override하는 방법
        Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
            @Override
            public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
                return o1.getValue().compareTo(o2.getValue());
            }
        });



//이 방법을 더 선호할 듯 하다.

        // Comparator를 사용하여 값으로 비교
        Comparator<Map.Entry<String, Integer>> valueComparator = new Comparator<Map.Entry<String, Integer>>() {
            @Override
            public int compare(Map.Entry<String, Integer> e1, Map.Entry<String, Integer> e2) {
                return e1.getValue().compareTo(e2.getValue());
            }
        };

3. Collections.sort함수를 이용해서 정렬한다.

        // 정렬된 리스트를 LinkedHashMap에 삽입
        LinkedHashMap<String, Integer> sortedMap = new LinkedHashMap<>();
        //결과 확인
        for (Map.Entry<String, Integer> entry : list) {
            sortedMap.put(entry.getKey(), entry.getValue());
        }

4. Java CompareTo와 Compare함수의 차이

설명

CompareTo

  • 객체 내부에서 사용한다.
  • implements Comparable<객체이름>
  • 자연순서를 정의한다. 즉 객체 안에 정의해 놓으면 객체에 값이 들어갈 때 자동으로 정렬해준다는 뜻
class Person implements Comparable<Person> {//implements함
    private String name;
    private int age;


    @Override
    public int compareTo(Person other) {
        return Integer.compare(this.age, other.age);
    }

    @Override
    public String toString() {
        return name + " : " + age;
    }
// toString오버라이드도 잘 알아두자.

Comparator

  • 객체 외부에서 정렬 기준을 정의한다.
  • 여러가지 정렬기준/특정상황을 정렬한다.
 List<Person> people = new ArrayList<>();
        people.add(new Person("Alice", 30));
        people.add(new Person("Bob", 25));
        people.add(new Person("Charlie", 35));
        people.add(new Person("David", 25));
        people.add(new Person("Edward", 30));

        // 나이로만 정렬하는 Comparator
        Comparator<Person> ageComparator = new Comparator<Person>() {
            @Override
            public int compare(Person p1, Person p2) {
                return Integer.compare(p1.getAge(), p2.getAge());
            }
        };

        Collections.sort(people, ageComparator);

5. Java Map.EntrySet이란

설명

  • Map interface메소드이다.
  • 키 -값 쌍을 Set형식으로 반환한다.
  • Map의 모든 항복에 접근하고 수정할 수 있다.

반복작업


Map<String, Integer> map = new HashMap<>();
map.put("one", 1);
map.put("two", 2);

for (Map.Entry<String, Integer> entry : map.entrySet()) {
    System.out.println(entry.getKey() + " : " + entry.getValue());
}

수정 작업

for (Map.Entry<String, Integer> entry : map.entrySet()) {
    entry.setValue(entry.getValue() + 1);
}
  • 반복 중에 값 수정이 가능하다.

정렬 작업

List<Map.Entry<String, Integer>> entries = new ArrayList<>(map.entrySet());
entries.sort(Map.Entry.comparingByValue());

(위의 코드는 value를 기준으로 정렬하는 방법이다.)


REVIEW

오늘의 코테 문제

시키는대로만 하면 돼서 어렵지는 않았던 문제 근데 문제는 내가 Comparator사용법을 잘 모름ㅋ
아이패드로 깔끔하게 적어볼까 했지만 역시 디지털보다는 아날로그가 좋기 떄문에 이 방법을 선택했다...그래도 언제 어디서나 보는 맛은 ipad필기가 더 좋기는 한데 종이에 쓸 때 그 필기감을 도저히 대체할 수가 없어서 슬프다. 그래도 이것저것 정리하고 그리는데는 ipad가 깔끔하니까... 그렇겠지?...

사실 오늘 공부한 내용 적을게 훨씬 많은데 다 못적었당 손으로 쓰는데 한 시간 컴퓨터로 정리하는데 딱 한 시간 걸리는 듯 하다.
ㅠㅠ 아쉬웡


#99클럽 #코딩테스트준비 #개발자취업 #항해99 #TIL

profile
Yellta가 BE개발해요! 왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜왜 가 제일 중요하죠

0개의 댓글