-
[올리브씨의 알고리즘 입문] Day 6 - 문자열, 반복문, 출력, 배열, 조건문알고리즘/프로그래머스_입문 2024. 4. 3. 15:23
021. 문자열 뒤집기
문제 설명.
문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요.
제한 사항.
1 ≤ my_string의 길이 ≤ 1,000
입출력 예.
my_string return "jaron" "noraj" "bread" "daerb"
풀이.
class Solution { public String solution(String my_string) { int leng = (int)my_string.length(); String[] strArr = my_string.split(""); String answer = ""; for(int i=0 ; i<leng ; i++){ answer += strArr[(leng-1)-i)]; } return answer; } }
다른 풀이.
class Solution { public String solution(String my_string) { StringBuilder sb = new StringBuilder(); sb.append(my_string).reverse(); return sb.toString(); } }
class Solution { public String solution(String myString) { return new StringBuilder(myString).reverse().toString(); } }
MAIN POINTS.
더보기[개발 포인트]
StringBuffer 또는 StringBuilder의 기능을 사용할 수 있는가?
기본 선언 :
import java.util.*;
StringBuffer sb = new StringBuffer(); //객체 선언
StringBuffer sb = new StringBuffer("문자열"); //객체 선언 + 문자열 주입
StringBuffer의 주요 메소드
- .append(); → sb.append("생성할 문자열");
문자열을 계속해서 추가해 나갈 수 있다. toString()메서드를 사용하면 String 자료형으로 변경할 수 있다. - .insert(); → sb.insert(위치 인덱스,"추가 문자열");
지정위치에 문자열을 추가할 수 있다. - .substring(); → sb.substring(시작 인덱스, 끝 인덱스);
시작~끝 위치의 문자를 뽑아낸다.
StringBuilder의 주요 메소드
- .append(); → sb.append("bbb"); / sb.append(4);
문자열을 추가한다. - .insert(int offset, String str); → sb.insert(2, "ccc");
offset 위치에 str을 추가한다. - .replace(); → .replace(3, 6, "ye")
첫번째와 두번째 파라미터로 받는 숫자 인덱스에 위치한 문자열을 대체한다. - .substring(int start, (int end)); → sb.substring(5), sb.substring(3, 7);
인덱싱. 파라미터가 하나라면 해당 인덱스부터 끝까지, 두개라면 시작점과 끝점-1 까지 인덱싱. - deleteCharAt(int index); → sb.deleteCharAt(3);
인덱스에 위치한 문자 하나를 삭제한다. - .delete(int start, int end); → sb.delete(3, sb.length());
start 부터 end-1 까지의 문자를 삭제한다. - .toString(); → sb.toString("문자열");
String으로 변환한다. - .reverse(); → sb.reverse("문자열");
해당 문자 전체를 뒤집는다. - .setCharAt(int index, String s); → sb.setCharAt(변경문자 인덱스, 변경할 문자);
index 위치의 문자를 s로 변경. - .setLength(int len); → sb.setLength(인덱스 길이);
문자열 길이 조정, 현재 문자열보다 길게 조정하면 공백으로 채워짐, 현재 문자열보다 짧게 조정하면 나머지 문자는 삭제. - .trimToSize(); →sb.trimToSize();
문자열이 저장된 char[] 배열 사이즈를 현재 문자열 길이와 동일하게 조정, String 클래스의 trim()이 앞 뒤 공백을 제거하는 것과 같이 공백 사이즈를 제공하는 것, 배열의 남는 사이즈는 공백이므로, 문자열 뒷부분의 공백을 모두 제거해준다고 보면 됨.
022. 직각삼각형 출력하기
문제 설명.
"*"의 높이와 너비를 1이라고 했을 때, "*"을 이용해 직각 이등변 삼각형을 그리려고합니다. 정수 n 이 주어지면 높이와 너비가 n 인 직각 이등변 삼각형을 출력하도록 코드를 작성해보세요.
제한 사항.
1 ≤ n ≤ 10
입출력 예.
입력 출력 3 *
**
***
풀이.
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for(int x = 1; x<=n; x++){ for(int y = 0; y<x; y++){ System.out.print("*"); } System.out.println(); } } }
다른 풀이.
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); for(int i=1; i<=n; i++){ System.out.println("*".repeat(i)); } } }
MAIN POINTS.
더보기[개발 포인트]
- .repeat(반복할 수); 를 사용할 수 있는가?
- Scanner 사용을 이해했는가?
023. 짝수 홀수 개수
문제 설명.
정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한 사항.
1 ≤ num_list의 길이 ≤ 100
0 ≤ num_list의 원소 ≤ 1,000입출력 예.
num_list result [1, 2, 3, 4, 5] [2, 3] [1, 3, 5, 7] [0, 4]
풀이.
class Solution { public int[] solution(int[] num_list) { int odd_cnt = 0; //홀 int even_cnt = 0; //짝 for(int index=0; index<num_list.length; index++){ if(num_list[index]%2 == 0){ even_cnt++; } else{ odd_cnt++; } } int[] answer = {even_cnt, odd_cnt}; return answer; } }
다른 풀이.
class Solution { public int[] solution(int[] num_list) { int[] answer = new int[2]; for(int i = 0; i < num_list.length; i++) answer[num_list[i] % 2]++; return answer; } }
MAIN POINTS.
더보기다른풀이법 소름돋아... 미친것같아
024. 문자 반복 출력하기
문제 설명.
문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.
제한 사항.
2 ≤ my_string 길이 ≤ 5
2 ≤ n ≤ 10
"my_string"은 영어 대소문자로 이루어져 있습니다.입출력 예.
my_string n result "hello" 3 "hhheeellllllooo"
풀이.
class Solution { public String solution(String my_string, int n) { char[] charArr = new char[my_string.length()]; String answer = ""; for(int i=0; i<my_string.length(); i++){ charArr[i]=(my_string.charAt(i)); //charArr[] index에 글자별로 char 주입 for(int j=1; j<=n; j++){ answer += Character.toString(charArr[i]); } } return answer; } }
다른 풀이.
class Solution { public String solution(String my_string, int n) { StringBuilder sb = new StringBuilder(); for(char c : my_string.toCharArray()){ sb.append((c + "").repeat(n)); } return sb.toString(); } }
MAIN POINTS.
더보기- StringBuilder 함수 : .append("") / .repeat(n) 등
- char[] 함수 : charAt(i)
- char ↔ Stirng 형변환 : https://www.javatpoint.com/java-char-to-string 참고
- char 또는 String 인덱스별 Array 주입 / str.split()함수 사용
출처 :https://school.programmers.co.kr/ 입문 알고리즘
https://school.programmers.co.kr/learn/challenges/beginner?order=acceptance_desc&languages=java
'알고리즘 > 프로그래머스_입문' 카테고리의 다른 글
[올리브씨의 알고리즘 입문] Day 8 - 배열, 구현, 수학 (0) 2024.04.16 [올리브씨의 알고리즘 입문] Day 7 - 문자열, 조건문, 수학, 반복문 (0) 2024.04.04 [올리브씨의 알고리즘 입문] Day 5 - 수학, 배열 (0) 2024.03.29 [올리브씨의 알고리즘 입문] Day 4 - 수학, 배열 (0) 2024.03.27 [올리브씨의 알고리즘 입문] Day 3 - 사칙연산, 배열, 수학 (2) 2024.03.26 - .append(); → sb.append("생성할 문자열");