본문 바로가기
웃음기 있는 글들/n일차

10일차

by pon9 2024. 11. 13.

오전 ~ 오후 2시 반: 알고리즘 1문제

문제 하나 푸는 데 5시간 걸렸다. 어제까지 합치면 6시간인가? 버그 걸렸다. 그래도 풀어서 너무너무너무너무 기쁘다. 한단계 성장했다.

큐만 쓰는 문제인줄 알았더니 투 포인터가 메인이라니.. 재밌다.!!

https://roqkfchqh.tistory.com/46

 

프로그래머스 두 큐 합 같게 만들기(투 포인터)

제목에 큐가 들어가서 큐 문제인 줄 알았는데 .. 예전에 잠깐 스치듯이 공부한 슬라이딩 윈도우 옆에 있던 놈이 문득 생각나서 찾아서 풀어봤다...어제까지 끙끙대다가 포기할까 했는데 저 킹받

roqkfchqh.tistory.com

하......................

 

오전 ~ 오후 3시: JAVA 4주차 강의 수강

알고리즘 풀면서 화날때마다 JAVA 강의를 하나씩 들었는데 얼떨결에 4주차를 완료했다. 4주차는 그렇게 어려운 내용은 없었다. 3주차에서 알려주는 다형성 인터페이스 상속 등등 구조 설계가 훨씬 어렵다.

그리고 알고리즘을 풀면서 4주차에서 알려주는 collection을(뭐 큐가 리스트랑 비슷하니까&^^) 공부했다고 생각 중이다. ㅎㅎ

 

오후: JAVA 개인 프로젝트 레벨2

4주차 강의 숙제 겸 java 개인 프로젝트 레벨2까지는 거의 다 구현했다.

이건 프로젝트 기간 끝나기 전까지 블로그에 올리면 안 되겠지..? 안될거같당;ㅅ;

 

저녁: 스택, 큐 관련 알고리즘 2문제

알고리즘을 자바로는 처음 풀어본다! 스택이나 큐에 좀 더 익숙해지기 위해 풀었다.

이 두 개가 적당히 난이도도 있으면서 할만해 보였다. 하하

근데 무시했다가 큰 코 다쳤다.............

내가 자바로 할수있는거라곤 단순구현 뿐이란걸 뼈저리게 느꼈다,,,, wow...

c로 알고리즘을 풀다 보니 java의 알고리즘에서 자주 쓰이는 요소를 하나도 모른다

ㅋㅋㅋㅋㅋㅋ

욕심을 줄이고, JAVA의 알고리즘에서 자주 쓰이는 함수들을 공부 한 뒤에 자기 전 까지 프로세스 한 문제만이라도 정확히 풀어보기로 했다


~JAVA의 알고리즘에서 자주 쓰이는 함수들~

1.ArrayList와 LinkedList: 동적 배열과 연결 리스트를 쉽게 사용할 수 있도록 해준다. C에서는 직접 구현해야 하는 것이다.

ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(10);	//요소 추가
arrayList.get(0);	//요소에 접근

LinkedList<Integer> linkedList = new LinkedList<>();
linkedList.add(20);	//요소 추가
linkedList.remove();	//첫 번째 요소 제거

 

2.HashMap 및 HashSet: 해시맵과 집합을 쉽게 사용할 수 있다. C에서는 직접 구현해야 하는 것이다.

HashMap<String, Integer> map = new HashMap<>();
map.put("hi", 3);	//키-값 쌍 추가
map.get("hi");		//키에 대한 값 가져오기

HashSet<Integer> set = new HashSet<>();
set.add(5);		//집합에 요소 추가
set.contains(5);	//요소 존재 여부 확인

 

3.Stream API: 함수형 프로그래밍을 지원하여 데이터의 필터링, 매핑, 집계를 간단히 처리 가능하다. C에는 없는 기능으로, 배열이나 컬렉션을 다룰 때 매우 유용하다.

int[] arr = {1, 2, 3, 4, 5};
int sum = Arrays.stream(arr).sum(); //배열 합계
int max = Arrays.stream(arr).max().getAsInt(); //배열 최댓값
long count = Arrays.stream(arr).filter(x -> x > 2).count(); //조건에 맞는 요소 개수

 

4.Collection 클래스: 리스트의 정렬이나 최소/최대값을 쉽게 구할 수 있다.

List<Integer> list = Arrays.asList(3, 1, 4, 1, 5);
Collection.sort(list);	//리스트 정렬
int min = Collections.min(list); //리스트의 최솟값
int max = Collections.max(list); //리스트의 최댓값
Collections.revers(list);	 //리스트 반전

 

5.Deque(이중 끝 큐): 양쪽 끝에서 삽입과 삭제가 가능한 queue다. C에서는 직접 구현해야 한다.

Deque<Integer> deque = new ArrayDeque<>();
deque.addFirst(10);	//앞쪽에 추가
deque.addLast(20);	//뒤쪽에 추가
deque.removeFirst();	//앞쪽 제거
deque.removeLast();	//뒤쪽 제거

 

6.String 메서드: C에서는 문자열 조작을 위해 함수를 직접 써야하지만, JAVA에서는 메서드로 쉽게 다룰 수 있다.

String s = "Hello, World!";
s.length();			//문자열 길이
s.substring(0, 5);		//부분 문자열
s.contains("World");		//문자열 포함 여부
s.replace("Hello", "Hi");	//문자열 대체
s.split(", ");			//문자열 분리

 

7.Math 클래스: 수학 연산 쉽게 가능

int max = Math.max(10, 20);		//최댓값
int min = Math.min(10, 20);		//최솟값
double power = Math.pow(2, 3);		//거듭제곱
double squareRoot = Math.sqrt(16);	//제곱근

 

8.배열의 길이

C: sizeof(arr) / sizeof(arr[0])

Java: arr.length

 

9.문자열 길이

C: strlen(arr)

Java: str.length()

 

10.문자열 비교

C: strcmp(str1, str2)

Java: str1.equals(str2)

 

11.문자열 복사

C: strcpy(dest, src)

Java: String dest = new String(src);

 

12.최대값 및 최소값 구하기

C: 직접 구현

Java: Arrays.stream(arr).max().getAsInt() 또는 max 자리에 min

 

13.제곱수 계산

C: pow(base, exponent)

Java: Math.pow(base, exponent)

 

14:절댓값

C: abs(x)

Java: Math.abs(x)

 

15.올림, 내림, 반올림

C: ceil(), floor(), round()

Java: Math.ceil(), Math.floor(), Math.round()


내가 초보라서 그런가 알고리즘을 두 언어로 하는 건 굉장히 어려운 것 같다 ㅇㅅㅇ; 

C쪽으로 사고하다가 덜 익숙한 Java식으로 사고하려니 뭔가 어렵다.

어쨋든 Java로도 코딩을 해야 하니까 정리를 하긴 했는데, 흠......... .........................

Java에 많이 익숙해질 때 까지 좀 미뤄야겠다 ㅎ

 

그래서 깔끔히 손 놓고 5주차 강의를 들었다. ^^ 쩝..

 

+ 다시 모인 11조~~

'웃음기 있는 글들 > n일차' 카테고리의 다른 글

11일차  (1) 2024.11.14
9일차  (0) 2024.11.12
8일차  (1) 2024.11.11