99클럽 코테 스터디 33일차 TIL - 백준 탕수육(JAVA) | 프로그래머스 - 신규 아이디 추천(JAVA)

Gaeng·2024년 11월 29일
post-thumbnail

백준 탕수육

문제해결

이 문제는 다른 것보다 반복되는 규칙을 찾아야하는 귀찮은 문제.

  • 문자수 홀수이면 같은 문자를 더해 짝수로 만든 다음
  • 각 문자의 위치가 홀수일 때, answer1로
  • 각 문자의 위치가 짝수일 때, answer2로 위치하게 한다.
    홀수인 문자열을 짝수의 문자열로 바꾼 다음에 풀면 되는 문제

코드

import java.util.Scanner;
public class Main {
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        int T = sc.nextInt();
        for (int i = 0; i < T; i++) {
            String s = sc.next();
            String answer1 = "";
            String answer2 = "";
            s = s.length() % 2 == 0 ? s : s + s;
            for (int j = 1; j <= s.length(); j++) {
                if (j % 2 != 0) {
                    answer1 += s.charAt(j-1);
                } else {
                    answer2 += s.charAt(j-1);
                }
            }
            System.out.println(answer1);
            System.out.println(answer2);
        }
    }
}

미들러 문제

신규 아이디 추천

문제가 굉장히 문자열을 잘 가지고 놀 줄 알아야 풀 수 있는 문제......
문자열을 잘 가지고 노는 사람이 되어야 하는데....
생각만하면 쉬운데, 구현이 어렵네......

근데 다른 사람의 해설 풀이를 봤는데, 정규표현식으로 문제를 풀면 간단한 것이었다. 정규표현식에 대해 공부를 해보기!!!!

import java.util.*;

class Solution {
    public String solution(String new_id) {
           String answer = "";
            new_id = new_id.toLowerCase(); 

            List<Character> charArray = new ArrayList<>();

            for(int i = 0; i < new_id.length(); i++) {
                char c = new_id.charAt(i);
                if(Character.isAlphabetic(c)||Character.isDigit(c)||c=='-'|| c=='_' || c=='.') {
                    charArray.add(c);
                }
            }
            int count = 0;
            new_id ="";
            for(char c : charArray){
                new_id +=c;
            }

            while(new_id.contains("..")){
                  new_id = new_id.replace("..", ".");
            }

            new_id = new_id.charAt(0)=='.' ? new_id.substring(1) : new_id;
            new_id = new_id.equals("") ? "a" : new_id;
            new_id = new_id.contains(" ") ? new_id.replace(" ", "a") : new_id;
            new_id = new_id.length()>=16 ? new_id.substring(0,15) : new_id;
            new_id = new_id.charAt(new_id.length()-1) == '.' ? new_id.substring(0,new_id.length()-1) : new_id;

            while(new_id.length()<=2){
                new_id += new_id.charAt(new_id.length()-1);
            }
            answer =  new_id;
            return answer;
        }

}
profile
문제를 해결하면서 나온 문제를 기록하는 노트

0개의 댓글