2023.08.15 - 알고리즘

mjjin·2023년 8월 15일
0

알고리즘

문제 출처 : 프로그래머스

a와 b출력하기

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();

        System.out.println("a = " + a + "\nb = " +b);
    }
}

\n으로 줄을 한 칸 내려주고, 나머지는 문자열을 조합했다.

문자열 반복해서 출력하기

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str = sc.next();
        int n = sc.nextInt();
        for (int i = 0; i < n; i++) { System.out.print(str); }
    }
}

줄띄움을 하는 System.out.println이 아닌, System.out.print로 출력해
문자열을 연속해서 붙이고, 붙이는 횟수는 반복문으로 풀었다.

대소문자 바꿔서 출력하기

import java.util.Scanner;
public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        String answer = "";

        for (int i = 0; i < a.length(); i++) { 
            if(a.charAt(i) <= 90 && a.charAt(i) >= 65) {
                answer += (char)(a.charAt(i)+32);
            } else {
                answer += (char)(a.charAt(i)-32);
            }
        }
        System.out.println(answer);
    }
}

a-z의 아스키는 97~122, A-Z의 아스키는 65~90 이다.
대문자와 소문자의 차이는 32로
32라는 숫자를 더하거나 빼서 대소문자 전환이 가능했다.
아스키로 전환해 대소문자 구분 및 변환을 해주고,
변환값을 빈 문자열에 담아 해결했다.

특수문자 출력하기

public class Solution {
    public static void main(String[] args) {
        System.out.println("!@#$%^&*(\\'\"<>?:;");
    }
}

\, " 기호 앞에 \를 한 번 더 붙여서 문자대로 출력시켰다.

덧셈식 출력하기

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int a = sc.nextInt();
        int b = sc.nextInt();

        System.out.println(a + " + " + b + " = " + (a + b));
    }
}

문자열 붙여서 출력하기

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        String b = sc.next();
        System.out.print(a+b);
    }
}

문자열 돌리기

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String a = sc.next();
        for (int i = 0; i < a.length(); i++) {
            System.out.println(a.charAt(i));
        }
    }
}

한 글자씩 반복문으로 출력

홀짝 구분하기

import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        if (n % 2 == 0) {
            System.out.println(n + " is even");
        } else {
            System.out.println(n + " is odd");
        }
    }
}
import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        System.out.println(n + " is " + (n % 2 == 0 ? "even" : "odd"));
    }
}

2로 나눴을 때 나머지가 0이면 짝수, 나머지가 0이 아니면 홀수로
if문으로 출력했다.
삼항 연산자로도 풀 수 있을 것 같아 두가지 방식 모두로 풀어봤다.

문자열 겹쳐쓰기

class Solution {
    public String solution(String my_string, String overwrite_string, int s) {
        String answer = "";
        for (int i = 0; i < s; i++){
            answer += my_string.charAt(i);
        }
        answer += overwrite_string;
        for (int i = answer.length(); i < my_string.length(); i++){
            answer += my_string.charAt(i);
        }
        return answer;
    }
}

my_string의 인덱스만큼만 빈 문자열에 먼저 추가하고
이후는 overwrite_string의 길이만큼 추가,
그 이후는 answer의 마지막 글자부터 i를 시작, my_string의 마지막 길이만큼
반복문을 통해 글자를 추가시켰다.
다른 사람들의 풀이를 보니 문자열 자르기 substring으로 대부분 푼 것 같다......
String 메서드를 공부 했는데도 제대로 활용을 못하는 것 같다. ㅜㅜ

두 수의 나눗셈

class Solution {
    public int solution(int num1, int num2) {
        double answer = (double)num1/num2;
        answer *= 1000;
        return (int)answer;
    }
}

double로 형변환 하고, int로 다시 형변환 해서 완성

0개의 댓글