반응형
정렬 알고리즘에 대하여
https://hsp1116.tistory.com/33
재귀함수(return으로 for문 없이 반복)
public class MyMain_Recursive {
// 재귀 함수
static int hap(int n) {
if(n==1) return 1;
// return 값이 자기 자신을 호출하기 때문에, for문을 쓰지 않아도 더하기가 계속 반복된다.
// 한 메소드에서 계속 반복되는게 아니라 static int hap(9).. static int hap(8)..
// 과 같이 n 값이 계속 변하기 때문에 별개로 실행되는 것이다.
return n + hap(n-1);
}
public static void main(String[] args) {
// 함수(메소드) 재귀호출
int n = 10;
int sum = 0;
sum = hap(n);
System.out.printf("%d까지의 합 : %d\n", n, sum); // result = 55
}
}
ArrayList를 사용하는 알고리즘
더보기
public class MyMain_LastCard {
public static void main(String[] args) {
// 1. N개의 카드숫자 입력받는다
// 2. 1장의 카드가 남을때까지 아래 내용 반복
// 1) 첫번째 카드 버린다
// 2) 두번째 카드 마지막으로 보낸다
// 3. 마지막 남은 카드를 출력
int N; // 카드 숫자
Scanner scanner = new Scanner(System.in);
N = scanner.nextInt();
List<Integer> card = new ArrayList<Integer>(); // 카드 생성
for(int i = 1; i < N; i++) {
card.add(i);
}
// 0 1 2 3 4
// card = 1 2 3 4 5
// 1장의 카드가 남을때까지 반복
while(card.size()>1) {
// 1번째 카드 버린다
card.remove(0);
// 2번째 카드(결과적으로 1번째)를 마지막으로 보낸다
int no = card.remove(0);
card.add(no);
// 위의 식과 동일
// card.add(card.remove(0));
}
System.out.println(card.get(0));
}
}
ArrayList 배열을 Array로 변경(toArray와 Arrays를 활용)
더보기
import java.util.ArrayList;
import java.util.List;
class Solution {
public String[] solution(String[] strArr) {
List<String> answer2 = new ArrayList<String>();
int result = 0;
int indexResult = 0;
for(int i = 0; i < strArr.length; i++) {
indexResult = strArr[i].indexOf("ad");
if(indexResult == -1) {
answer2.add(strArr[i]);
result++;
}
}
String [] answer = new String [answer2.size()];
for(int i = 0; i < answer.length; i++) {
answer[i] = answer2.get(i);
}
return answer;
}
}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Solution {
public String[] solution(String[] strArr) {
List<String> answer2 = new ArrayList<String>();
int result = 0;
int indexResult = 0;
for(int i = 0; i < strArr.length; i++) {
indexResult = strArr[i].indexOf("ad");
if(indexResult == -1) {
answer2.add(strArr[i]);
result++;
}
}
String [] answer = answer2.toArray(new String[answer2.size()]);
Arrays.toString(answer);
return answer;
}
}
더 쉽게 Array로 변경하는 방법
- Arrays.toString() 사용할 필요도 없다.
String [] arr1 = new String[set1.size()];
set1.toArray(arr1);
replace or StringBuilder.setCharAt
더보기
- 문자열에 중복이 없을 때 사용가능한 코드
class Solution {
public String solution(String my_string, String overwrite_string, int s) {
String answer = "";
String result = "";
// my_string의 문자열중 s인덱스부터 overwrite_string의 길이까지 출력
answer = my_string;
int charSub = s;
for(int i = 0; i < overwrite_string.length(); i++){
answer = answer.replace(answer.charAt(charSub), overwrite_string.charAt(i));
charSub++;
}
return answer;
}
}
- 내가 처음에 원했던 replace의 기능이 StringBuilder에 있었다.
class Solution {
public StringBuilder solution(String my_string, String overwrite_string, int s) {
StringBuilder answer = new StringBuilder(my_string);
for(int i = 0; i < overwrite_string.length(); i++) {
answer.setCharAt(s++, overwrite_string.charAt(i));
}
return answer;
}
}
toCharArray를 사용해서 문자열 자릿수의 문자 뽑아내기 or replace 연달아 사용하기
- my code
if문의 길이를 짧게 함축시켜보자
반응형
'java(2)↗' 카테고리의 다른 글
[회원가입] form Servlet 전달 (0) | 2024.06.17 |
---|---|
JSP를 활용해서 웹사이트 만들기 (0) | 2024.06.05 |
java Stream (0) | 2024.05.29 |
java 2차원배열 및 알고리즘 (0) | 2024.05.14 |
java 요약노트(2) (0) | 2024.05.13 |