티스토리 뷰

1️⃣ 편지

 

문제 설명

머쓱이는 할머니께 생신 축하 편지를 쓰려고 합니다. 할머니가 보시기 편하도록 글자 한 자 한 자를 가로 2cm 크기로 적으려고 하며, 편지를 가로로만 적을 때, 축하 문구 message를 적기 위해 필요한 편지지의 최소 가로길이를 return 하도록 solution 함수를 완성해주세요.

 

제한사항

  • 공백도 하나의 문자로 취급합니다.
  • 1 ≤ message의 길이 ≤ 50
  • 편지지의 여백은 생각하지 않습니다.
  • message는 영문 알파벳 대소문자, ‘!’, ‘~’ 또는 공백으로만 이루어져 있습니다.

입출력 예

message result
"happy birthday!" 30
"I love you~" 22

 

입출력 예 #1

  • message의 글자 수가 15개로 최소 가로 30cm의 편지지가 필요합니다.

입출력 예 #2

  • message의 글자 수가 11개로 최소 가로 22cm의 편지지가 필요합니다.

 

💻 나의 풀이

class Solution {
    public int solution(String message) {
         return 2*message.length();
    }
}

 

대문자든 소문자든 가리지않고 무조건 2cm씩 필요하니까 message 길이에 2를 곱해줘서 해결했습니다.

너무 간단해서 이..이게 맞아? 했던;

 


 

2️⃣ 인덱스 바꾸기

 

문제 설명

정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

 

제한사항

  • 1 ≤ array의 길이 ≤ 100
  • 0 ≤ array 원소 ≤ 1,000
  • array에 중복된 숫자는 없습니다.

입출력 예

array result
[1, 8, 3] [8, 1]
[9, 10, 11, 18] [11, 2]

 

입출력 예 #1

  • 1, 8, 3 중 가장 큰 수는 8이고 인덱스 1에 있습니다.

입출력 예 #2

  • 9, 10, 11, 8 중 가장 큰 수는 11이고 인덱스 2에 있습니다.

 

💻 나의 풀이

class Solution {
    public int[] solution(int[] array) {
        int[] answer = new int[2];  // 최대값과 인덱스 갖도록 배열 초기화
        int max=0;
        int index=0;
        
        for(int i=0; i<array.length; i++) {
            if(max < array[i]){   // 만약 max가 i번째 값보다 작으면
                max = array[i];   // max를 i번째 값으로 갱신
                index = i;  // 인덱스도 갱신
            }
        }
        
        answer[0] = max;
        answer[1] = index;
        
        return answer;
    }
}

 

[최댓값, 인덱스] 이렇게 결과가 나와야하니까 일단 answer 배열의 길이를 2로 초기화 해줍니다.

max와 index도 초기화 해준 후, array를 순회하면서 만약 max가 array의 i번째 값보다 작으면 (최댓값이 되어야하니까) max의 값을 array의 i번째 값으로 갱신시켜줍니다.

마찬가지로 인덱스도 해당 i로 갱신시켜줘야겠죠.

그 값들을 answer의 0번째, 1번째 자리에 넣어주고 반환해주면 됩니다.

 

 

🔎 다른 사람의 풀이

class Solution {
    public int[] solution(int[] array) {
        int[] answer = new int[2];

        for(int i=0;i<array.length;i++) {
            if(array[i] > answer[0]) {
                answer[0] = array[i];
                answer[1] = i;
            }
        }

        return answer;
    }
}

 

굳이 max와 index변수를 선언안해주고 이렇게 해결하면 될 뻔 했네요...

 


 

3️⃣ 문자열 계산하기

 

문제 설명

my_string은 "3 + 5"처럼 문자열로 된 수식입니다. 문자열 my_string이 매개변수로 주어질 때, 수식을 계산한 값을 return 하는 solution 함수를 완성해주세요.

 

제한사항

  • 연산자는 +, -만 존재합니다.
  • 문자열의 시작과 끝에는 공백이 없습니다.
  • 0으로 시작하는 숫자는 주어지지 않습니다.
  • 잘못된 수식은 주어지지 않습니다.
  • 5 ≤ my_string의 길이 ≤ 100
  • my_string을 계산한 결과값은 1 이상 100,000 이하입니다.
    • my_string의 중간 계산 값은 -100,000 이상 100,000 이하입니다.
    • 계산에 사용하는 숫자는 1 이상 20,000 이하인 자연수입니다.
    • my_string에는 연산자가 적어도 하나 포함되어 있습니다.
  • return type 은 정수형입니다.
  • my_string의 숫자와 연산자는 공백 하나로 구분되어 있습니다.

입출력 예

my_string result
"3+4" 7

 

입출력 예 #1

  • 3 + 4 = 7을 return 합니다.

 

💻 나의 풀이

class Solution {
    public int solution(String my_string) {
        int answer = 0;
        
        String[] s = my_string.split(" ");
        answer = Integer.parseInt(s[0]);
        
        for(int i=1; i<s.length-1; i++){
            if(s[i].equals("+")){
                answer += Integer.parseInt(s[i+1]);
            } else if(s[i].equals("-")){
                answer -= Integer.parseInt(s[i+1]);
            }
        }
        return answer;
    }
}

 

먼저 split() 메소드로 공백을 기준으로 나눠서 문자열 s를 생성해줍니다.

그리고 parseInt를 사용해 s의 첫번째 원소의 값을 answer에 담아줍니다.

 

이제 배열을 순회할건데 인덱스는 0부터 시작하기 때문에 s.length-1을 해줘야합니다!

if문을 사용해 +일 경우와 -일 경우를 나누고

+일 경우 s+1번째 원소를 더 해주고, -일 경우 s+1번째 원소를 빼줍니다.

 


 

4️⃣ 배열의 유사도

 

문제 설명

두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ s1, s2의 길이 ≤ 100
  • 1 ≤ s1, s2의 원소의 길이 ≤ 10
  • s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다
  • s1과 s2는 각각 중복된 원소를 갖지 않습니다.

입출력 예

s1 s2 result
["a", "b", "c"] ["com", "b", "d", "p", "c"] 2
["n", "omg"] ["m", "dot"] 0

 

입출력 예 #1

  • "b"와 "c"가 같으므로 2를 return합니다.

입출력 예 #2

  • 같은 원소가 없으므로 0을 return합니다.

💻 나의 풀이

class Solution {
    public int solution(String[] s1, String[] s2) {
        int answer = 0;
        
        for(int i=0; i<s1.length; i++){
            for(int j=0; j<s2.length; j++){
                if(s1[i].equals(s2[j])){
                    answer++;
                }
            }
        }
        return answer;
    }
}

 

이중for문 대신 다른 방법이 없을까 고민해봤는데...이게 최선이었습니다. 😂

다른 사람들의 풀이를 봐도 뭔가 딱 이거다! 하는 풀이가 없더라구요..?!

 


 

 

교육을 수료한지 얼마 안되었는데 요즘 할 것들이 너~무 많아서 하루가 모자른거 같은 느낌입니다.

포트폴리오는 수정하고 수정하고 또 수정해도 부족한게 너무 많은 느낌이고, 조금 손대면 시간 순삭이고

자바 문법도 부족한 부분 강의듣고 메꾸고있고, 코테도 매일매일 꾸준히 해야되고, 개인 프젝도 하나 시작하면서 이력서를 넣어볼까 하는데...이걸 다 해낼 수 있을지ㅠㅠ

게다가 금전적인 문제로 알바도 해야할거같은데 CS공부까지 플러스 하고 싶어요.................

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
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 29 30 31
글 보관함