강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của qwer42479617
qwer42479617

câu hỏi đã được viết

Giới thiệu về giải bài toán bằng thuật toán Python (chuẩn bị cho bài kiểm tra viết mã)

9. Mã cải tiến từ điển Anigram

개선된 코드에서 질문

Viết

·

227

2

안녕하세요 수업 잘 듣고 있습니다

개선된 코드에서 질문있습니다.

<개선된 코드>

import sys

#sys.stdin=open("in1.txt", "r")

a=input()

b=input()

sH=dict()

for x in a:

    sH[x]=sH.get(x, 0)+1

for x in b:

    sH[x]=sH.get(x, 0)-1

for x in a:

    if(sH.get(x)>0):

        print("NO")

        break;

else:

    print("YES")

if(sH.get(x)>0):

-> 이부분에서, 왜 Sh.get(x)!=0으로 안쓰시고 >0 으로 쓰신건지 궁금합니다. 답을 낼때 차이가 

없는 것은 알겠는데, 혹시 (!=)을 사용하면 시간이 오래걸리는 그런 문제가 있는건지

궁금해서 여쭤봅니다.

코테 준비 같이 해요! python

Câu trả lời 3

1

codingcamp님의 프로필 이미지
codingcamp
Người chia sẻ kiến thức

안녕하세요^^

문제에서 보면 "길이가 같은 두 개의 단어가 주어지면..." 이걸 생각하시고 위 질문을 다시 실제 입력예를 만들어 생각해보세요.

1번 질문은 뭔지 정확히 이해가 잘 안되서 실제 입력예를 만들어서 생각해 보시고 그래도 이해가 가지 않으면 그 입력예(두 단어)를 저에게 보여주시면 답해드리겠습니다.

2번 질문 같은 경우 A단어에 없고 B단어에 있는 경우는 길이가 같은 두 단어기 때문에 A에 있는 어떤 문자는 0이 되지 않고 분명 양수로 존재하고 있겠죠.

제가 보기에는 두 질문 모두 문제의 전제조건인 입력으로 들어오는 두 단어의 길이가 같다는 사실을 놓치신게 아닌가 싶습니다.

만약 두 단어의 길이가 다르게 입력되는 문제라면 아나그램인지 비교하기 전에 두 단어의 길이를 비교해 단어의 길이가 다르면 그냥 바로 "NO"라고 하면 됩니다.

두 단어의 길이가 같다는 부분을 놓치고 있었습니다.

정확한 답변 감사드립니다!

0

(아나그램 개선코드)

1. 만약 A리스트에는 a가 1개, B리스트에는 b가 2개인 경우에는

마지막 for문의 SH.get(a)>0일 경우에는

해당 값이 음수인데 이걸 걸러주지 못하지 않나요?

2. 또한 마지막 for문에서 'for x in a: '로 하면,  A리스트에는 없고, B리스트에는 있는 경우는 어떻게 걸러주는 지 궁금합니다!

0

codingcamp님의 프로필 이미지
codingcamp
Người chia sẻ kiến thức

안녕하세요^^

그냥 그때는 그렇게 했던 것 같습니다. (!=)을 해도 아무 상관없습니다.

Hình ảnh hồ sơ của qwer42479617
qwer42479617

câu hỏi đã được viết

Đặt câu hỏi