[프로그래머스] 17677번

그녕·2023년 1월 25일
0
post-thumbnail

[1차] 뉴스 클러스터링

프로그래머스 17677번

<알게된것>

1. 일반 집합의 교집합/합집합

>> s1 = set([1, 2, 3, 4, 5, 6])
>> s2 = set([4, 5, 6, 7, 8, 9])
교집합
>> s1 & s2
{4, 5, 6}
합집합
>> s1 | s2
{1, 2, 3, 4, 5, 6, 7, 8, 9}
차집합
>> s1 - s2
{1, 2, 3}
>> s2 - s1
{8, 9, 7}

2. 다중 집합의 교집합/합집합

a = [1,2,2,3,4,5]
b = [1,1,2,3,4,6]
다중 집합의 합집합: [1,1,2,2,3,4,5,6] 
다중 집합의 교집합: [1,2,3,4]

합집합 구하기 방법

a = [1,2,2,3,4,5]
b = [1,1,2,3,4,6]
a_temp = a.copy()
a_result = a.copy()
for i in b:
	if i not in a_temp:
    		a_result.append(i)
      	else:
        	a_temp.remove(i)
# 결과
a_temp

교집합 구하는 방법

a = [1,2,2,3,4,5]
b = [1,1,2,3,4,6]
result = []
for i in b:
	if i in a:
    		a.remove(i)
            result.append(i)
print(result)

3.소수점 아래 숫자 버리고 정수부분만 남기기

->trunc()함수 쓰기
(floor은 내림, ceil은 올림, round는 반올림)

import math
x = math.trunc(2.54)
y = math.trunc(3.1235)
print(x)
print(y)
>2
>3

4. 문자열의 구성이 알파벳인지 확인하기

->isalpha() 함수 쓰기
문자열에 공백, 기호, 숫자가 있을 경우 False를 리턴하고 다 알파벳이면 True 리턴해줌

ex = "Code_Angler"
print(ex.isalpha())
>False(_기호가 있어서)

내 코드

import math
def solution(str1, str2):
    answer = 0
    data1=[]
    data2=[]
    result=[]
    str1=str1.lower()
    str2=str2.lower()
    for i in range(len(str1)-1):
        if str1[i:i+2].isalpha()==True:
            data1.append(str1[i:i+2])
            
    #print(data1)
    
    for i in range(len(str2)-1):
        if str2[i:i+2].isalpha()==True:
            data2.append(str2[i:i+2])
    #print(data2)
    
    # print(set(data1) & set(data2))#교집합
    # print(set(data1) | set(data2))#합집합
    data_temp = data1.copy()
    data_result = data1.copy()

#다중집합의 합집합
    for i in data2:
        if i not in data_temp:
            data_result.append(i)
        else:
            data_temp.remove(i)
    #print(data_result)
    #print(len(data_result))

    
#다중집합의 교집합
    for i in data2:
        if i in data1:
            data1.remove(i)
            result.append(i)
    #print(result)
    if (len(data_result))==0:
        a = 1
    else:
        a= len(result)/len(data_result)
        
    answer= math.trunc(a*65536)
    #print(1/0)
    return answer
#print(solution("FRANCE","french"))
#print(solution("aa1+aa2","AAAA12"))
print(solution("E=M*C^2","e=m*c^2"))

풀긴 했는데 counter함수를 썼으면 더 쉬웠을거 같다. 나중에 counter방법으로도 풀어봐야겠다.

0개의 댓글