뇌운동일지

오늘은 무엇을 풀었나 본문

알고리즘 문제풀이

오늘은 무엇을 풀었나

purpleduck 2021. 11. 29. 17:47

2019 년 이후 2년만에 재개하는 알고리즘 문제풀이 

-> 과거의 나 아주 못하지는 않았는데, 왜 못한다고 생각했는지 모를 일이다. 

Java 로 하겠다. 

 

11/29 (월)

1. 

배열에서 중복되는 값을 제거하고 가져오겠다.

Set : 중복되지 않는 값을 가지는 collection

배열을 Set 타입으로 변환하여 중복을 제거한다.

HashSet : Set 인터페이스를 구현한 클래스

https://hianna.tistory.com/554

-> 아 어려움

 

2. 

Min Heap

Java 에서 PriorityQueue 사용

poll(), add()

isEmpty(), size() 등의 메소드를 활용함.

-> 이거 한문제 풀었다. 

 

3. 

Stack / Queue 문제 

Java 나눗셈 올림 : Math.ceil()

-> ceil 로 안되어서 / % 로 계산하고 % 결과가 0이 아니면 +1 했다. 

Java에서 배열 크기를 동적으로 사용할 수 없어서 LinkedList 활용

 

Java Stack 

https://coding-factory.tistory.com/601

Java Array, ArrayList, LinkedList

https://wayhome25.github.io/cs/2017/04/17/cs-18-1/

integer linkedlist to int array

https://www.techiedelight.com/convert-list-integer-array-int/

 

Min/Max Stack 을 활용해서 푸는 문제인 것으로 추측

-> stack 사용하고, max 값 따로 저장해서 풀었다. 

 

오늘 2문제 풀었음. 

 

참고할만한 Java 강의 

https://programmers.co.kr/learn/courses/5

 

11/30 (화)

1. 

최대공약수 최소공배수 문제 -> 이것도 못풀겠다.. 심각...

유클리드호제법을 사용해서 풀어야 한다고 한다. 

https://imkh.dev/algorithm-gcd-lcm/

2개의 자연수 a, b(a > b)에 대해서 a를 b로 나눈 나머지가 r일 때, a와 b의 최대공약수는 b와 r의 최대공약수와 같다

compareTo 를 사용해서 두 정수 중 더 큰 수를 찾았다. 

https://imkh.dev/algorithm-gcd-lcm/

두 수 a와 b의 최소공배수는 a와 b의 곱을 a와 b의 최대공약수를 나눈 것과 같다

최대공약수는 영어로 greatest common factor 라고 함. 

 

나머지가 0 이 될 때까지 while 문을 사용해서 풀었는데, 재귀함수를 사용해서 푸는 방법도 있다고 한다. 

 

2. 

소수 찾기 -> 에라토스테네스의 체를 이용해서 풀라고 한다

https://ko.wikipedia.org/wiki/%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4%EC%9D%98_%EC%B2%B4

https://velog.io/@max9106/Algorithm-%EC%97%90%EB%9D%BC%ED%86%A0%EC%8A%A4%ED%85%8C%EB%84%A4%EC%8A%A4%EC%9D%98-%EC%B2%B4

 

오늘도 2문제를 풀었다

프로그래머스 level1 문제를 다 푼 다음, 인강을 들어볼 계획

 

12/1 (수)

1. 

정수 제곱근 판별 

Math.sqrt() 를 사용해서 풀어볼 것

Math.sqrt(n) : double type return 루트

Math.pow(밑,지수) : 입출력 모두 double 제곱 

parseInt() VS intValue()

2.

greedy algorithm

Java String 에서 특정 문자 위치 : charAt() 을 써야겠다. 

문자열 길이는 length() 로 체크 

알파벳은 26개 [0~25]

Java 에서 문자를 아스키코드로 변환하는 법 : char 를 int 로 캐스트

A가 65, Z가 90

왼쪽, 오른쪽을 못정하겠음.

-> 어려워서 넘어감

 

3. 

정렬

int 배열을 string 으로

https://stackoverflow.com/questions/3619850/converting-an-int-array-to-a-string-array

-> 어려워서 못풀겠음 

오늘은 1문제 풀었다.

Comments