본문 바로가기
스터디일지/JAVA

[2023.07.29] StringTokenizer의 메소드 / Math 함수 / Greedy Algorithm (탐욕 알고리즘)

by 똥쟁이핑크 2023. 7. 29.

https://teresa88.tistory.com/60

 

[자바] 11047번 동전 0

https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1

teresa88.tistory.com

https://teresa88.tistory.com/61

 

[자바] 1037번 약수

https://www.acmicpc.net/problem/1037 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고,

teresa88.tistory.com

https://teresa88.tistory.com/62

 

[자바] 1927번 최소 힙

https://www.acmicpc.net/problem/1927 1927번: 최소 힙 첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에

teresa88.tistory.com

https://teresa88.tistory.com/63

 

[자바] 1541번 잃어버린 괄호

https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서

teresa88.tistory.com

https://teresa88.tistory.com/64

 

[자바] 11050번 이항 계수 1

https://www.acmicpc.net/problem/11050 11050번: 이항 계수 1 첫째 줄에 \(N\)과 \(K\)가 주어진다. (1 ≤ \(N\) ≤ 10, 0 ≤ \(K\) ≤ \(N\)) www.acmicpc.net 문제 자연수 N과 정수 K가 주어졌을 때 이항 계수를 구하는 프로

teresa88.tistory.com

 

 

1. StringTokenizer의 메소드

https://teresa88.tistory.com/48

 

[2023.07.26] StringTokenizer / Queue & Deque / Stack

https://teresa88.tistory.com/44 [자바] 18258번 큐2 https://www.acmicpc.net/problem/18258 18258번: 큐 2 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 2,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어

teresa88.tistory.com

 

저번에는 StringTokenizer가 무엇인지 개념을 공부했는데 메소드 공부가 필요하여 메소드를 정리하려 한다.

 

1-1. hasMoreToken() / hasMoreElements()

  • StringTokenizer 에서 사용할 수 있는 토큰이 더 있는지 확인한다.
  • return 은 boolean 형이다.
  • 토큰이 존재하면 true, 없으면 false를 반환 한다. 

 

1-2. nextToken()

  • StringTokenizer 에서 다음 토큰을 불러오는 메소드 이다.
  • return 은 String형이다.

 

1-3. nextElement()

  • 1-2와 동일 하지만 Object 타입으로 반환 한다.

 

1-4. countTokens()

  • 토큰의 개수를 센다.
  • return 은 int 형이다.

 

참고한 사이트

https://codevang.tistory.com/125

 

java.util.StringTokenizer 주요 메소드 [1/1]

[ StringTokenizer Class ] C언어 strtok의 로직과 유사하지만 원본을 훼손하지 않음 문자열을 특정 문자열(구분자)로 나누어 (Token) 및 저장 및 처리 String 클래스의 split()과 비슷하지만, 배열이 아닌 인스

codevang.tistory.com

 

https://crazykim2.tistory.com/473

 

[JAVA] StringTokenizer, hasMoreTokens(), nextToken() 알아보자!

안녕하세요 JAVA의 기본 클래스인 StringTokenizer와 StringTokenizer 클래스 밑의 메소드 hasMoreTokens(), nextToken()에 대해서 알아보겠습니다 목차 StringTokenizer hasMoreToken() nextToken() StringTokenizer 구분자 지정하

crazykim2.tistory.com

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=asap0628&logNo=220721551020 

 

[예제로 보는 함수 - java]StringTokenizer Class - 선언하기, hasMoreTokens() - 다음 Token 존재 확인하기, next

  예제로 보는 StringTokenizer Class - 선언하기, StringTokenizer.hasMoreTokens() - &...

blog.naver.com

 

 

 

2. Math 함수

  • 수학에서 자주 사용하는 상수들과 함수들을 미리 구현해 놓은 클래스
  • 모든 메소드는 static 이다 → 객체를 생성하지 않고도 바로 사용 가능하다.
  • java.lang 패키지에 포함되어 있다.

 

2-1. random()

  • 임의의 수를 생성한다.
  • 0.0 이상 1.0 미만의 double형 값을 생성하여 반환한다.

 

2-2. abs()

  • 절대값을 구하는 함수

 

2-3. max() / mix()

  • max() - 전달된 2개의 값을 비교하여 큰 값을 반환한다.
  • min() -  전달된 2개의 값을 비교하여 가장 작은 값을 반환한다.

 

2-4. pow() / sqrt()

  • pow() - 전달 받은 2개의 double형 값을 가지고 제곱 연산을 수행한다.
  • sqrt() - 전달 받은 double형 값의 제곱근 값을 반환한다.

 

2-5. floor() / ceil() / round()

  • floor() - 전달 받은 값과 같거나 작은 수 중에서 가장 큰 정수를 반환한다.
  • ceil() - 전달 받은 값과 같거나 큰 수 중에서가장 작은 정수를 반환한다.
  • round() - 전달 받은 실수를 소수점 첫째 자리에서 반올림한 정수를 반환한다.

이것 외에도 더 많은 메소드들이 있고 참고한 사이트에서 더 많은 메소드를 확인할 수 있다.

 

참고한 사이트

http://www.tcpschool.com/java/java_api_math

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

https://thalals.tistory.com/13

 

[JAVA] 자바 Math 메소드 정리 (수학 함수 정리)

자바 대표적인 Math 메소드 Math 클래스의 메소드는 매우 다양하며, 그중에서 많이 사용되는 메소드는 다음과 같습니다. 메소드 설명 static double random() 0.0 이상 1.0 미만의 범위에서 임의의 double형

thalals.tistory.com

 

 

3. Greedy Algorithm (탐욕 알고리즘)

https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6lNQV%2FbtqSZxFswOV%2FNkS0Cuz7vqXsxuWGd2BRVk%2Fimg.png

  • 동적 프로그래밍 사용 시 지나치게 많은 일을 하기 때문에 서로 보완하면서 사용한다.
  • 최적에 가까운 값을 구하기 위해 사용되는 알고리즘이다. → 근사치 추정에 활용한다.
  • 매 순간 최적이라고 생각되는 경우를 선택하여 최종 값을 구한다.
  • 전체에서 최적값을 언제나 구할 수는 없지만 속도가 빠르다. → 빠르게 근사치 추정을 할 수 있다.
  • 특수한 조건이 필요하다.
    • 탐욕 선택 속성 - 이전의 선택이 이후에 영향을 주지 않음을 의미한다.
    • 최적 부분 구조 - 부분 문제의 최적결과가 전체에도 그대로 적용 될 수 있어야 한다.

3-1. Dynamic Programming

  • 동적계획법 or 동적 프로그래밍이라고 부른다.
  • 하나의 큰 문제를 작은 문제로 나누어서 해결한다.
  • 해결한 답을 저장하고 재활용한다.
  • 사용 조건
    • Overlapping Subproblems(겹치는 부분 문제)
      • 동일한 작은 문제들이 반복하여 나타나는 경우 사용 가능하다.
    • Optimal Substructure(최적 부분 구조)
      • 부분 문제의 최적 결과 값을 사용해 전체 문제의 최적 결과를 낼 수 있는 경우
      • 특정 문제의 정답은 문제의 크기에 상관없이 항상 동일하다.

 

참고한 사이트

https://hongjw1938.tistory.com/172

 

알고리즘 - 그리디 알고리즘(Greedy Algorithm)

1. 그리디 알고리즘(Greedy Algorithm)이란? 간단히 설명해, 그리디 알고리즘은 "매 선택에서 현재 당장 최적인 답"을 선택해 전체 적합한 결과를 도출하자는 알고리즘 기법이다. 즉, 백트래킹을 통해

hongjw1938.tistory.com

https://st-lab.tistory.com/143

 

[백준] 11047번 : 동전 0 - JAVA [자바]

www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥

st-lab.tistory.com

https://hongjw1938.tistory.com/47

 

알고리즘 - Dynamic Programming(동적 계획법)

1. 개요 DP, 즉 다이나믹 프로그래밍(또는 동적 계획법)은 기본적인 아이디어로 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용하는 것으로

hongjw1938.tistory.com