Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

14-fnzksxl #69

Merged
merged 2 commits into from
Apr 10, 2024
Merged

14-fnzksxl #69

merged 2 commits into from
Apr 10, 2024

Conversation

fnzksxl
Copy link
Member

@fnzksxl fnzksxl commented Mar 27, 2024

πŸ”— 문제 링크

λ¬Έμžμ—΄ 폭발

βœ”οΈ μ†Œμš”λœ μ‹œκ°„

μ•½ 30λΆ„?

✨ μˆ˜λ„ μ½”λ“œ

프리뷰 - μŠ€νƒμ„ μ΄μš©ν•œ κ°„λ‹¨ν•œ μ•Œκ³ λ¦¬μ¦˜μž„λ‹ˆλ‹€. 폭발 λ¬Έμžμ—΄μ„ 뒀집어 μƒκ°ν•˜λŠ” 게 ν‚€λ½€μΈνŠΈμ—μš”

이 문제λ₯Ό κ°„λ‹¨ν•˜κ²Œ μ„€λͺ…ν•˜μžλ©΄ λ¬Έμžμ—΄ 두 κ°œκ°€ μ£Όμ–΄μ§€λŠ”λ°, 후에 μ£Όμ–΄μ§€λŠ” λ¬Έμžμ—΄μ΄ 전에 μ£Όμ–΄μ§€λŠ” λ¬Έμžμ—΄μ— 포함이 되면
μ œκ±°ν•˜λŠ” λ¬Έμ œμž…λ‹ˆλ‹€.

예제

mirkovC4nizCC44
C4
--> mirkovniz

문제 μ‘°κ±΄μ—μ„œ μ£Όμ–΄μ§€λŠ” λ¬Έμžμ—΄μ˜ 길이가 κ½€λ‚˜ κΈΈκΈ° λ•Œλ¬Έμ— ν•œ 번의 순회둜 λλ§ˆμ³μ•Όν•©λ‹ˆλ‹€. 반볡문이 μ΄μ€‘μœΌλ‘œ λŒμ•„κ°€λ©΄ μ‹œκ°„ 초과 이슈둜 버틸 μˆ˜κ°€ μ—†μ–΄μš”.

μ•„μ΄λ””μ–΄λŠ” κ½€ μ‰½μŠ΅λ‹ˆλ‹€.

  1. λ¬Έμžμ—΄ 순회
  2. 순회 도쀑 폭발 λ¬Έμžμ—΄ 끝이 λ‚˜μ˜€λ©΄? 그만큼 뽑아내기
    3-1. 뽑아낸 친ꡬ == 뒀집은 폭발 λ¬Έμžμ—΄ -> append μ•ˆ 함
    3-2. 뽑아낸 친ꡬ != 뒀집은 폭발 λ¬Έμžμ—΄ -> λ‹€μ‹œ append
  3. 반볡

뙇 μ΄ν•΄ν•˜κΈ° μ‰½κ²Œ 그림으둜 λ³΄μ‹œμ£ .
μ΄ˆκΈ°μƒνƒœμž…λ‹ˆλ‹€ !

image

이제 λ¬Έμžμ—΄μ„ μˆœνšŒν•˜λ©΄μ„œ stack 배열에 μΆ”κ°€ν•΄μ€λ‹ˆλ‹€. ν•˜μ§€λ§Œ ν‚€ κ°’(폭발 λ¬Έμžμ—΄μ˜ λ§ˆμ§€λ§‰ 문자)이 μΆ”κ°€κ°€ 되면?

image

폭발 λ¬Έμžμ—΄μ˜ 길이만큼 pop ν•΄μ€λ‹ˆλ‹€. pop으둜 stackμ—μ„œ λΉΌμ™”κΈ° λ•Œλ¬Έμ— μˆœμ„œκ°€ λ°˜λŒ€μΌ 수 밖에 μ—†μ–΄μš”!
κ·Έλž˜μ„œ 뒀집은 폭발 λ¬Έμžμ—΄κ³Ό 비ꡐλ₯Ό ν•˜λŠ” κ²λ‹ˆλ‹€.

image

λ‹€μ‹œ stack 배열에 μΆ”κ°€ν•˜λ‹€κ°€ ν‚€ 값인 4λ₯Ό λ§Œλ‚¬μœΌλ―€λ‘œ μœ„ 과정을 λ°˜λ³΅ν•΄μ€λ‹ˆλ‹€.

image

image

μ „μ²΄μ½”λ“œ

μ‹€μ œ 컀밋과 쑰금 λ‹€λ¦…λ‹ˆλ‹€λ§Œ, 제 λˆˆμ—” 이게 κΉ”λ”ν•΄λ³΄μ—¬μ„œ 쑰금 λ°”κΏ¨μ–΄μš”
자꾸 join μ¨μ„œ ν•˜λŠ”κ²Œ νŽΈν•œ κ±Έ μ•Œλ©΄μ„œλ„ 처음 적을 λ•ŒλŠ” μ•ˆ λ– μ˜€λ₯΄λ„€μš”.. γ…‹γ…‹γ…‹

import sys

input = sys.stdin.readline

word = list(input().strip())
bomb = list(input().strip())

key = bomb[-1]
bomb.reverse()

stack = []

for w in word:
    stack.append(w)
    if w == key and len(stack) >= len(bomb):
        temp = []
        for _ in range(len(bomb)):
            temp.append(stack.pop())
        if temp == bomb:
            continue
        else:
            for i in range(len(temp), 0, -1):
                stack.append(temp[i-1])

if len(stack) == 0:
    print('FRULA')
else:
    print("".join(stack))

πŸ“š μƒˆλ‘­κ²Œ μ•Œκ²Œλœ λ‚΄μš©

@alstjr7437
Copy link
Member

아직 μž‘μ„±μ€ μ•ˆλμ§€λ§Œ ν’€κ³  프리뷰λ₯Ό λ΄€λŠ”λ° μ €λŠ” λ”°λ‘œ λ¬Έμžμ—΄μ„ 뒀집고 풀진 μ•Šμ•˜μŠ΅λ‹ˆλ‹€!!

result에 μš°μ„  λ„£μœΌλ©΄μ„œ boom의 길이만큼 result에 λ“€μ–΄μžˆλŠ” 단어와 비ꡐ해 폭발 λ¬Έμžμ—΄μ΄ 있으면 resultμ—μ„œ pop을 ν•˜λŠ” ν˜•μ‹μœΌλ‘œ μ§„ν–‰ν–ˆμŠ΅λ‹ˆλ‹€!!

word = input()
boom = list(input())

result = []

for i in word:
    result.append(i)
    if result[len(result)- len(boom):len(result)] == boom:
        for _ in range(len(boom)):
            result.pop()

if result:
    print("".join(result))
else :
    print("FRULA")

@fnzksxl
Copy link
Member Author

fnzksxl commented Apr 1, 2024

@alstjr7437

였, μ œκ°€ PR μ“°λ©΄μ„œ μΆ”κ°€λ‘œ κΈ°μˆ ν•˜λ €κ³  ν–ˆλ˜ λ°©λ²•μž…λ‹ˆλ‹€!
μ €λŠ” μ‘°μž‘ν•˜κ²Œ ν’€κ³ λ‚˜μ„œ λ– μ˜€λ₯Έ 방법인데 μ—­μ‹œ λ―Όμ„λ‹˜μ΄μ‹œκ΅°μš”..

Copy link
Collaborator

@SeongHoonC SeongHoonC left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1μ°¨ μ‹œλ„
split κ³Ό joinToString 을 μ‚¬μš©ν•΄μ„œ ν•΄κ²°ν•˜λ €ν–ˆμœΌλ‚˜ λ©”λͺ¨λ¦¬μ΄ˆκ³Ό

fun main() {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val sentence = br.readLine()
    val bomb = br.readLine()

    var words = sentence.split(bomb)

    while (words.size > 1) {
        words = words.joinToString("").split(bomb)
    }
    val answer = words.joinToString("")
    if (answer.isEmpty()) {
        println("FRULA")
    }
    println(words.joinToString(""))
}

Copy link
Collaborator

@SeongHoonC SeongHoonC left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

성곡 kotlin list λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠμœΌλ‹ˆ λ©”λͺ¨λ¦¬ 초과 ν•΄κ²°~

import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.Stack

fun main() {
    val br = BufferedReader(InputStreamReader(System.`in`))
    val sentence = br.readLine()
    val bomb = br.readLine()
    val stack = Stack<Char>()

    for (i in sentence.indices) {
        stack.push(sentence[i])
        if (stack.size < bomb.length) {
            continue
        }
        if (!isEqual(bomb, stack)) {
            continue
        }
        repeat(bomb.length) { stack.pop() }
    }
    if (stack.isEmpty()) {
        println("FRULA")
        return
    }
    println(stack.joinToString(""))
}

private fun isEqual(bomb: String, stack: Stack<Char>): Boolean {
    for (j in bomb.indices) {
        if (stack[stack.lastIndex - j] != bomb[bomb.lastIndex - j]) {
            return false
        }
    }
    return true
}

@alstjr7437
Copy link
Member

@alstjr7437

였, μ œκ°€ PR μ“°λ©΄μ„œ μΆ”κ°€λ‘œ κΈ°μˆ ν•˜λ €κ³  ν–ˆλ˜ λ°©λ²•μž…λ‹ˆλ‹€! μ €λŠ” μ‘°μž‘ν•˜κ²Œ ν’€κ³ λ‚˜μ„œ λ– μ˜€λ₯Έ 방법인데 μ—­μ‹œ λ―Όμ„λ‹˜μ΄μ‹œκ΅°μš”..

@fnzksxl
였호 keyκ°€ λ“€μ–΄μ˜€λ©΄ λ°˜λ³΅λ¬Έμ„ μ²˜λ¦¬ν•˜λŠ” ν˜•μ‹μœΌλ‘œ ν–ˆκ΅°μš”

사싀 μ²˜μŒμ—λŠ” κ°™μ€κ²Œ λ‚˜μ˜€λ©΄ λΊ΄μ£Όλ©΄ λ˜λŠ”κ±° μ•„λ‹ˆμ•Ό ν•˜λ©΄μ„œ μ§œλ‹€κ°€ ν­λ°œν•˜κ³  μ΄μ–΄μ§€λŠ” 뢀뢄을 처리λ₯Ό λͺ»ν•΄μ„œ μ½”λ“œλ₯Ό λ°”κΏ”λ΄€μŠ΅λ‹ˆλ‹€!!

Copy link
Collaborator

@wkdghdwns199 wkdghdwns199 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이런 풀이도 μžˆλ„€μš”!

λ¬Έμžμ—΄μ„ μž…λ ₯λ°›κ³  μŠ€νƒμ— 문자 ν•˜λ‚˜μ”© λ„£μœΌλ©΄μ„œ λ§Œμ•½ μŠ€νƒμ΄ μžˆλŠ” λ¬Έμžκ°€ 폭발 문자면 μŠ€νƒμ—μ„œ 뽑아내고, λ§ˆμ§€λ§‰μ— μŠ€νƒμ— λ¬Έμžκ°€ λ‚¨μ•„μžˆμœΌλ©΄ stack 에 μžˆλŠ” λ¬Έμžλ“€μ„ 좜λ ₯ν•˜κ³ , μ•„λ‹ˆλ©΄ FRULA λ₯Ό 좜λ ₯ν•˜λŠ” μ½”λ“œμž…λ‹ˆλ‹€!

import sys
input =sys.stdin.readline

S = input().rstrip()
B = input().rstrip()
stack = []
b_len = len(B)

for i in range(len(S)):
    stack.append(S[i])
    if ''.join(stack[-b_len:]) == B:
        for _ in range(b_len):
            stack.pop()

if stack :
    print(''.join(stack))
else :
    print('FRULA')

@fnzksxl fnzksxl merged commit 7365458 into main Apr 10, 2024
11 checks passed
@fnzksxl fnzksxl deleted the 14-fnzksxl branch April 10, 2024 09:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants