본문 바로가기
일기/항해99

[항해99 6기] 2주차 알고리즘 테스트를 하면서 느낀점

by 고구밍 2022. 3. 18.

 

 

 

2주차 팀 스터디를 마치고, 마지막 테스트였습니다.

문제는 2가지가 주어졌고, 그중 가장 쉬웠던 문제를 선택하였습니다.

 

 

문제의 내용은

1. "1012345678"로 저장되어 있는 것을 앞에 "0"을 더합니다.

2. "01012345678"에서 "010-1234-5678"으로 번호에 하이폰"-"을 넣어주는 문제입니다.

 

 

 

public class Main {
    public String solution(String phone) {
        String answer = "";
        String addnum = "0"; 
        String num = addnum + phone; //@1   
        
        char hip = '-'; //@2
          // 01062509911
        answer = num.substring(0, 3) + hip +num.substring(3,7)+ hip +num.substring(7,11);
        return answer; //@3
}

    public static void main(String[] args) {
        Main method = new Main();
        System.out.println(method.solution("1062509911"));
    }
}

 

 

 

 

 

@1 : addnum 이라는 변수를 만들어 "0" 문자를 대입 한 뒤 -> num이라는 변수에 "0" + "전화번호"

 

 

@2 : 문자열은 char이기 때문에 hip이라는 변수에 '-'를 대입하였습니다.

(char은 ""큰 따옴표가 아닌 ''작은 따옴표만 인식합니다.)

 

 

@3 : Substring 함수를 활용하여 num.substring(start, end)을 대입하였습니다.

       "01012345678"에서 end는 값에서 end-1번째 숫자까지 출력이 된다.

       이를 활용하여 각각 (0,3)(3,7)(7,11)사이에 '+'를 더하면 값을 통하여 "010"+'-'+"1234"+'-'+"5678"

       하면 "010-2111-3326"이 됩니다. 

 

 

 

 

 

 

 

<Substring>

https://coding-factory.tistory.com/126

 

[Java] 문자열 자르기(Substring, Split) 사용법 & 예제

자바 스트링 클래스에는 사용하기 편리하도록 만들어놓은 여러 가지 함수가 있습니다. 이번 포스팅에서는 그 함수들 중 문자열 자르기에 관련된 함수들을 한번 알아보도록 하겠습니다.  SubStri

coding-factory.tistory.com

 

<자바에서의 ""와 ''차이>

https://velog.io/@mayain_3/JAVA%EC%9E%90%EB%B0%94%EC%97%90%EC%84%9C%EC%9D%98-%EC%99%80-%EC%9D%98-%EC%B0%A8%EC%9D%B4

 

자바에서의 "와 '의 차이

자바의 자료형 중 문자 데이터를 담는 자료형은 'char'다. 이 'char'는 글자 한 글자를 담는다.

velog.io

 

<조원분의 코드>

public String solution(String phone) {
          String answer = "";
          String phonenumber = "0"+phone;
          return phonenumber.replaceAll("(^02|[0-9]{3})([0-9]{3,4})([0-9]{4})$", "$1-$2-$3");
      }

현상님께서 정규식을 이용한 코드입니다.

 

replaceAll은 "정규 표현식"을 이용할 때 사용합니다. -> replace : 대상 문자열을 원하는 문자로 변환하는 함수

 

phonenumber 까지는 동일한 방식으로 "01062509911"이 나옵니다.

 

이후 정규식을 이용하여 문자열사이에 하이폰'-'을 추가해줘야 합니다.


<사용된 정규식 문법>

1. "" : 문자열에서

2. () : 소괄호 안의 하나의 문자

3. ^ : 문자열 시작

4. | : 패턴 안에서 or연산 ->

02|를 사용한 이유 -> 처음 010부분이 아닌 070이나 031같은 번호에도 사용할 수 있도록 고안 해 보았다고 하네요.

5. [] : 문자의 집단이나 범위를 나타내며 두 문자 사이는 - 기호로 범위를 정함

6. {} : 횟수 또는 범위를 나타냄

7. $ : 문자열 종료


<정규식 해석해보기>

"(^02|[0-9]{3})([0-9]{3,4})([0-9]{4})$", "$1-$2-$3"

 

""문자열에서 -> 하나의 문자가 -> 02 또는 [0-9]즉 숫자인 문자열에서 -> {3} 3자리 -> 010

                  -> 하나의 문자가 -> [0-9]즉 숫자인 문자열에서 -> {3,4} 3자리 또는 4자리 0 -> 6250

                  -> 하나의 문자가 -> [0-9]즉 숫자인 문자열에서 -> {4} 4자리 0 -> 9911

<각정의>

, 을

 

""문자열에 -> $1 첫번째 문자 - $2 두번째 문자 - $3 세번째 문자 ->로 바꾸기

 


 

따라서 다음과같은 결과값을 얻을 수 있었던 것 같습니다.

 

"010-6250-9911"

 

 

 

<replaceAll>

https://mine-it-record.tistory.com/127

 

[JAVA] 자바_replace/replaceAll (문자열 치환)

repalce() - String replace(CharSequence target, CharSequence replacement) - replace() 함수는 대상 문자열을 원하는 문자값으로 변환하는 함수이다. - 첫번째 매개변수는 변환하고자 하는 대상이 될 문자열 -..

mine-it-record.tistory.com

<정규표현식 문법>

https://coding-factory.tistory.com/529

 

[Java] 자바 정규 표현식 (Pattern, Matcher) 사용법 & 예제

정규표현식(Regular Expression)이란 컴퓨터 과학의 정규언어로부터 유래한 것으로 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식언어 입니다. 개발을 하다보면 전화번호, 주민등

coding-factory.tistory.com

 

<자주 사용하는 정규표현식 - 휴대전화번호>

https://coding-factory.tistory.com/819

 

[Web] 정규표현식 테스트 사이트 모음 총정리

정규표현식을 사용하다 보면 이 문법이 맞는지 아닌지 헷갈리는 경우가 있습니다. 또 언어마다 정규표현식이 조금씩 다른 부분도 있어 테스트를 많이 해야 합니다. 개발을 할 때 자체 테스트로

coding-factory.tistory.com

<휴대전화 정규식>

https://dahye-jeong.gitbook.io/java/java/undefined/regexp

 

정규표현식 - JAVA

문자열이 정해져 있는 형식(정규표현식 : Regular Expression)으로 구성되어 있는지 검증해야하는 경우가 있다. 예를 들어, 이메일, 전화번호를 사용자가 제대로 입력했는지 검증해야할 때 정규표현

dahye-jeong.gitbook.io

 

 

< 느낀점 >

 

2주 동안 열심히라고 하기엔 부끄럽지만, 조원분들에게 뒤쳐지지 않기 위해 노력한 한 주였습니다.

처음으로 사용해보는 자바언어다보니, 모든 것이 생소해서 "오류와 우당탕!" 싸우면서 많이 힘들었습니다.

 

그래도 28개정도 되는 [level 1 프로그래머스] 문제를 팀원들과 분담하여 풀어가면서,

가볍게 for / if else / 문자열(int,  long, string, char) / replit 실행자 사용법 등을 이해할 수 있는 시간이였습니다.

 

3주차 부터 주특기 공부가 시작된다고 하지만, 코딩테스트를 위해서라도 유튜브의 

"자바의 정석"강의를 처음부터 들으면서

자바의 기초를 다져야 겠다는 생각을 하였습니다.

 

일주일이라는 짧은 시간이였지만, 너무나 부족한 저를 도와주신 조원분께 감사한 한 주였던 것 같습니다.

 

 

https://replit.com/~

 

Log In

Replit is a simple yet powerful online IDE, Editor, Compiler, Interpreter, and REPL. Code, compile, run, and host in 50+ programming languages.

replit.com

https://youtube.com/playlist?list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp 

 

자바의 정석 기초편(2020최신)

최고의 자바강좌를 무료로 들을 수 있습니다. 어떤 유료강좌보다도 낫습니다.

www.youtube.com