일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 교환학생나라
- 독일교환학생
- 자바프로그래밍
- 디지털포렌식2급
- 교환학생준비
- 이탈리아
- 밀라노
- 자바
- 영국
- 교환학생수업
- 교환학생지원
- 울름
- 애플키노트
- 울름공과대학교
- 드롭박스포렌식
- 기숙사비
- 울름교환학생
- 영국여행
- 교환학생
- 디지털포렌식
- 울름기숙사
- 교환학생기숙사
- 드롭박스아티팩트
- 프라하여행
- 교환학생여행
- 내셔널갤러리
- 이탈리아여행
- 독일기숙사
- 밀라노두우모성당
- java
- Today
- Total
공부해야할 때
[JAVA] 특정원소 포함여부 알아보기 본문
1.7에 있는 내용은 이렇다
자바의 Standard library 를 사용하지 않고 특정 원소 x가 배열 arr안에 있는지 파악해야 하고 b)에선 재귀를 통하여 ch라는 문자가 arr에 몇번 나오는지를 파악해야한다.
먼저 a)부터 시작하자면
재귀를 통하여 arr이란 배열에서 x를 계속해서 찾아내고 배열의 끝이면 리턴을 하면 된다.
public static boolean contains(double x, double[] arr, int endIndex) {
if ( endIndex < 0)
return false;
else if (x == arr[endIndex])
return true;
else if (x != arr[endIndex])
return contains(x,arr,endIndex-1);
return false;
}
x는 찾는 값이고 arr은 x가 속해 있을지도 모를 배열이다. endIndex는 말그대로 인덱스의 끝이다.
생각해보면 간단하다.
인덱스의 끝까지 갔음에도 불구하고 x가 없다면 false를 리턴하면 되고 x와 arr[endIndex]가 일치하면 true를 반환하면 된다.
그리고 일치하지 않는다면 다시 contains함수를 불러서 비교를 한다.
즉 끝에서부터 하나씩 비료를 하는 샘이다.
다음은 b)이다. 앞의 예제와 다르게 이번엔 나오는 빈도수를 카운트 해야한다.
public static void demoCount() {
char[] c1 = "mississippi".toCharArray();
for (char ch = 'a'; ch <= 'z'; ch++){
System.out.println("Count " + ch + ": " + count(ch, c1));
};
}
이 조건에서 특정 문자 하나를 계속 카운트 해야하는데 좀처럼 답이 나오지 않았다...
char형으로 주어져서 이걸 string으로 바꾸거나 비교한 문자열을 잘라내고 싶어도 다 자바의 스탠다드 라이브러리를 사용해야하지만 사용하지 말라고 했으므로
결국 이 문제는 gg를 쳤다...
하지만 생각해보면 앞서 구현했던 메소드처럼 뭔가 뒤에서부터 하나씩 비교를 하면 될거 같다는 생각이 들긴 했다...
아직도 어떻게 구현하는지 정말 궁금하다 ㅠㅠ
'Computer Engineering > Algorithms and Data structure' 카테고리의 다른 글
[JAVA] 바코드 정렬하기 by using Radix sort (기수정렬) (0) | 2019.05.27 |
---|---|
[JAVA] 단어 조합 가짓수 구하기 (0) | 2019.03.05 |
[JAVA] 부분집합 알아보기 알고리즘 (0) | 2018.11.03 |
[JAVA] Plateau Length 구하기 알고리즘 (0) | 2018.10.31 |
[JAVA] Anagram 코딩 (0) | 2018.10.30 |