우규이인우윀
Eager To Learn 🌌
우규이인우윀
전체 방문자
였늘
μ–΄μ œ

λΈ”λ‘œκ·Έ 메뉴

  • 🏑 ν™ˆ
  • πŸš€ κΉƒν—ˆλΈŒ
  • β›… νƒœκ·Έ ν΄λΌμš°λ“œ
  • λΆ„λ₯˜ 전체보기 (217)
    • πŸ‘¨πŸ»‍πŸ’» PS (170)
      • JAVA (82)
      • MYSQL (1)
      • Docker (2)
      • PYTHON (24)
      • LeetCode 150 (39)
      • Algorithm 기법 (1)
      • 바킹독 (21)
    • λΈ”λ‘œκ·Έ 이사 (0)
    • Error (1)
    • CS (15)
      • DataBase (2)
      • OS (7)
      • Network (1)
      • Spring (1)
      • 자료ꡬ쑰 (3)
      • Java (1)
    • Learned (7)
      • Spring (7)
    • κ°œλ°œμ„œμ  (15)
      • 가상 λ©΄μ ‘ μ‚¬λ‘€λ‘œ λ°°μš°λŠ” λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œ 섀계 기초 (1)
      • 였브젝트 - 쑰영호 (7)
      • μΉœμ ˆν•œ SQL νŠœλ‹ (7)
    • 회고 (2)
hELLO Β· Designed By μ •μƒμš°.
우규이인우윀

Eager To Learn 🌌

πŸ‘¨πŸ»‍πŸ’» PS/JAVA

[JAVA] 2020 카카였 인턴십 γ€μˆ˜μ‹ μ΅œλŒ€ν™”γ€‘

2023. 4. 26. 14:47


λ¬Έμžμ—΄μ„ μ–΄λ–»κ²Œ μ²˜λ¦¬ν• κΉŒ ꡉμž₯히 많이 κ³ λ―Όν–ˆλ˜ λ¬Έμ œμ˜€λ‹€.

 

μ •κ·œμ‹μ„ μ‚¬μš©ν•˜λŠ”κ²Œ μ½”λ“œκ°€ 더 κ°„κ²°ν•΄μ§ˆ 것 κ°™μ•„μ„œ μ •κ·œμ‹μ„ μ‚¬μš©ν–ˆλ‹€.

 

그리고, μ—°μ‚°μžλŠ” + - * 3개만 μ£Όμ–΄μ§€κΈ° λ•Œλ¬Έμ—, μ—°μ‚°μž μš°μ„ μˆœμœ„λ₯Ό 직접 λͺ…μ‹œν•΄μ„œ μ„ μ–Έν•΄μ£Όμ—ˆλ‹€.

 

"*+-","+*-","*-+","+-*","-*+","-+*"

 

μœ„μ™€ 같은 6κ°€μ§€ κ²½μš°κ°€ μžˆμ„ 수 μžˆλ‹€.

 

λ¨Όμ € μ •κ·œμ‹ "\\d+|\\S" λ₯Ό μ‚¬μš©ν•˜λ©΄, μˆ«μžμ™€ μ—°μ‚°μžλ‘œ λ‚˜λˆŒ 수 μžˆλ‹€.

 

그리고, μ •κ·œμ‹μ„ λ°”νƒ•μœΌλ‘œ λΆ„λ¦¬ν•œ μ›μ†Œλ“€μ„, μˆœνšŒν•˜λ©΄μ„œ 숫자라면 μŠ€νƒμ— μ§‘μ–΄λ„£κ³ , μ—°μ‚°μžμ΄λ©΄μ„œ μš°μ„ μˆœμœ„μ— ν•΄λ‹Ήν•˜λŠ” μ—°μ‚°μžλΌλ©΄ μŠ€νƒμ— 있던 숫자λ₯Ό λΉΌμ„œ μ—°μ‚°μ²˜λ¦¬ ν•œ λ’€, λ„£μ–΄λ†“λŠ” λ°©μ‹μœΌλ‘œ ν‘œν˜„μ‹μ„ λ³€ν™˜μ‹œμΌ°λ‹€.

 

μš°μ„ μˆœμœ„κ°€ "*+-" 라고 κ°€μ •ν–ˆμ„λ•Œ "100-200*300-500+20" 이 식은

 

"100-60000-500+20" 으둜 λ³€ν™˜λ˜κ³  "100-60000-520" 이 λ³€ν™˜λ˜κ³  "-60420" 이 λ˜λŠ” 것이닀.

 

λ‹€λ§Œ, μ—¬κΈ°μ„œ μ£Όμ˜ν•  점이 μžˆλŠ”λ°

 

λ§Œμ•½ "100-200*300-500+20" 이 μ‹μ—μ„œ "-" 연산을 λ¨Όμ € μˆ˜ν–‰ν•˜λ©΄

 

"-100*-200+20" 이 되고 이 식을 λ‹€μ‹œ  "\\d+|\\S"  이 μ •κ·œμ‹μ„ μ‚¬μš©ν•˜κ²Œ 되면

[ - , 100 , * , - , 200 , + , 20 ] 와 같이 뢄리가 λœλ‹€λŠ” 점이닀.

 

λ”°λΌμ„œ, - 연산이 μˆ˜ν–‰λ˜κ³  λ‚˜μ„œλŠ” ν”Όμ—°μ‚°μžκ°€ μŒμˆ˜κ°€ λ˜λŠ” κ²½μš°κ°€ μƒκΈ°λ―€λ‘œ, μ •κ·œμ‹μ„ "-?\\d+|\\S" λ₯Ό μ‚¬μš©ν•΄μ•Ό μ—λŸ¬λ₯Ό λ°©μ§€ν•  수 μžˆμ—ˆλ‹€.

 

 

μ •κ·œμ‹μ„ κ°„λž΅ν•˜κ²Œ μ„€λͺ…ν•˜λ©΄, 

 

-? λŠ” - κΈ°ν˜Έκ°€ μžˆμ„ μˆ˜λ„ 없을 μˆ˜λ„ μžˆμŒμ„ λ‚˜νƒ€λ‚Έλ‹€. (μžˆλŠ” 경우 μ΅œλŒ€ 1개)

\\d+ λŠ” μ—°μ†λœ 숫자λ₯Ό λ‚˜νƒ€λ‚΄κ³ 

| λŠ” λ˜λŠ” 을 λ‚˜νƒ€λ‚΄κ³ 

\\S λŠ” 곡백이 μ•„λ‹Œ 문자λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.

 

 


 

import java.util.*;
import java.util.regex.*;

class Solution {
    Deque<String> q;
    public long solution(String expression) {

        long answer = 0;
        q = new ArrayDeque<>();
        String[] pri = {"*+-","+*-","*-+","+-*","-*+","-+*"};

        for(int i=0;i<pri.length;i++){

            boolean flag = true;
            String[] ops = pri[i].split("");
            String ex = expression;

            for(int j=0;j<ops.length;j++){

                String op = ops[j];
                Pattern p;
                Matcher m;

                if(flag){
                    p = Pattern.compile("\\d+|\\S");
                    m = p.matcher(ex);
                }else{
                    p = Pattern.compile("-?\\d+|\\S");
                    m = p.matcher(ex);
                }

                if(op.equals("-")){
                    flag = false;
                }

                while(m.find()){
                    String s = m.group();
                    if(s.equals(op)){
                        m.find();
                        q.offer(String.valueOf(getValue(q.pollLast(),m.group(),op)));
                    }else{
                        q.offer(s);
                    }
                }
                ex = toEx();
            }
            answer = Math.max(answer,Math.abs(Long.parseLong(ex)));
        }
        return answer;
    }

    long getValue(String num1,String num2,String op){
        long n1 = Long.parseLong(num1);
        long n2 = Long.parseLong(num2);
        if(op.equals("*")){
            return n1*n2;
        }else if(op.equals("+")){
            return n1+n2;
        }else{
            return n1-n2;
        }
    }

    String toEx(){
        StringBuilder sb = new StringBuilder();
        for(String str : q){
            sb.append(str);
        }
        q.clear();
        return sb.toString();
    }

}
    'πŸ‘¨πŸ»‍πŸ’» PS/JAVA' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • [JAVA] 2021 KAKAO BLIND RECRUITMENT γ€ν•©μŠΉ νƒμ‹œ μš”κΈˆγ€‘
    • [JAVA] 2021 카카였 μ±„μš©μ—°κ³„ν˜• 인턴십 【거리두기 ν™•μΈν•˜κΈ°γ€‘
    • [JAVA] 2019 카카였 개발자 겨울 인턴십 【징검닀리 κ±΄λ„ˆκΈ°γ€‘
    • [JAVA] 2018 KAKAO BLIND RECRUITMENT γ€λ°©κΈˆκ·Έκ³‘γ€‘
    우규이인우윀
    우규이인우윀
    개발자 κΏˆλ‚˜λ¬΄

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”