상세 컨텐츠

본문 제목

99클럽 코테 스터디 6일차 TIL + 오늘의 학습 키워드 : 해시

본문

728x90
반응형

6일차 꾹



제목: 99클럽 코테 스터디 6일차 TIL + 오늘의 학습 키워드 : 해시


- 오늘의 학습 키워드 : 해시

오늘도 키워드 힌트가 '해시'

백준 27160번 :할리갈리


- 공부한 내용 본인의 언어로 정리하기
1. any
: any() 함수는 주어진 iterable(반복 가능한 객체) 내에서 하나라도 True인 요소가 있으면 True를 반환하고, 모든 요소가 False일 경우 False를 반환합니다.
any() 함수는 특정 조건을 만족하는 요소가 있는지를 간편하게 확인할 때 유용하게 사용됩니다.

사용예시

# 1. 기본적인 사용예시
numbers = [0, 1, 2, 3]
has_positive = any(n > 0 for n in numbers)
print(has_positive)  # 출력: True


# 2. 모든 요소가 FALSE일 경우
numbers = [0, 0, 0]
has_positive = any(n > 0 for n in numbers)
print(has_positive)  # 출력: False

# 3. 리스트에서 특정 조건 찾기
fruits = ["apple", "banana", "cherry"]
has_long_fruit = any(len(fruit) > 6 for fruit in fruits)
print(has_long_fruit)  # 출력: True (banana의 길이가 6보다 큼)

# 4. 조건이 포함된 리스트 
bool_list = [False, False, True]
result = any(bool_list)
print(result)  # 출력: True

# 5. 비어있는 iterable  []
empty_list = []
result = any(empty_list)
print(result)  # 출력: False


* 아래 코드에서도 종을 눌러야 하는지 말아야하는지의 TRUE,FALSE에 대한 값을 
ANY함수를 이용해서 count == 5 for count in fruit_count.value() 
즉 각 과일별 갯수를 저장한 딕셔너리의 값 중에서 count가 5인 것이 있다면,
true를 저장하고 , 아니면 false를 저장해서 

마지막 출력에는 if ~ else를 이용해서 print출력했다.

 

 

- 오늘의 회고

 

입력 받는 부분까지는 어떻게 입력받아야 할지 스스로 알았는데,
출력을 위해서 어떤 로직으로 풀어야 하는지는 여전히 바로바로 
생각나지 않는다..;;

 

- 어떤 문제가 있었고, 나는 어떤 시도를 했는지

# 첫 줄에 카드 낼 횟수를 N이라는 변수에 저장한다.
# INPUT 함수를 이용해서 입력받은 데이터를 N에 저장하는데, 
# 기본 문자열 형태이기에 INT형을 써준다.

N = int(input("카드 낼 횟수를 입력해주세요 : "))

# 첫 줄에 입력한 횟수만큼 입력받기 전에, 
# S에는 과일 종류의 문자열을 리스트로 만들어주고
# X에는 과일 갯수를 나타내는 정수형 리스트를 만들어준다.

S = ["STRAWBERRY", "BANANA", "LIME", "PLUM"] # 4가지 종류의 과일 [딸기 ,바나나, 라임, 자두]
X = [1,2,3,4,5] # 1~5까지의 수

# 입력한다. BANANA 3 엔터 
user = input("입력: ")
S, X = user.split()

나의 문제 풀이는   위와 같은데,,, 이걸 입력하는 것까지는 하겠는데,  요기서 막혔다.
그리고 뤼튼에게 물어봤다..
근데 각 과일의 개수를 저장할 딕셔너리 변수를 만들었다..;;; <- 와..나 이 생각 왜 못했지..;; ㅠㅠ 


- 어떻게 해결했는지

# 카드의 개수 N을 입력받는다.
N = int(input())

# 각 과일의 개수를 저장할 딕셔너리 초기화
fruit_count = {
    "STRAWBERRY": 0,
    "BANANA": 0,
    "LIME": 0,
    "PLUM": 0
}

# N개의 카드 정보를 입력받아 과일의 개수를 센다.
for _ in range(N):
    user_input = input().strip()
    S, X = user_input.split()
    X = int(X)  # 문자열로 입력받은 X를 정수로 변환
    fruit_count[S] += X  # 해당 과일의 개수를 증가시킴

# 과일 개수 중에서 정확히 5개가 있는지 확인
need_bell = any(count == 5 for count in fruit_count.values())

# 결과 출력
if need_bell:
    print("YES")
else:
    print("NO")

코드 설명:
입력받기: 카드의 개수 N을 입력받고, 이후 N번 반복하여 카드 정보를 입력받습니다.
딕셔너리 초기화: fruit_count라는 딕셔너리를 사용해 각 과일의 개수를 0으로 초기화합니다.
과일 개수 세기: 각 카드 정보를 입력받아 해당 과일의 개수를 증가시킵니다.
종을 쳐야 하는지 확인: any() 함수를 사용해 과일 개수 중 5개가 있는지 확인합니다.
결과 출력: 종을 쳐야 한다면 "YES", 아니면 "NO"를 출력합니다.
이 코드를 실행하면 한별이가 종을 쳐야 하는지 여부를 판단할 수 있습니다.


- 무엇을 새롭게 알았는지

1. 딕셔너리를 이용해서 어떤 키값에 대해서 정해진 값만 가지는 것 말고도 개수를 세는 용도로도 쓰일 수가 있구나..;;
2. 그리고 any함수를 처음 사용해보는 것을 알았고, for count int fruit_count.values() 를 이용해서 딕셔너리의 값들 중 count가 5인 것을 찾아서 있으면 true 아니면 false라는 boolean값을 need_bell에 할당하고
3. 결과 출력은 참/거짓을 이용해서 if문을 쓰는 방법에 대해서 유용하다고 생각했다..;;

 


- 내일 학습할 것은 무엇인지
|
파이썬 공부해야겠지요 ㅠㅠ 밀린,,,,카드 제작과 업로드, 그리고 유닉스시스템 워크북의 문제풀이 필기
sqld 이론 필기  

내일까지 보내고 나면 새롭게 회사 적응해야하는데요.
사실...;; 인맥으로 면접보고 들어가는거라서 
정말 잘하고 싶거든요...;;
너무 쌩 신입 뽑아놓고 후회하게 하고 싶지않은데,
진짜 뭔가 문제가 주어졌을 때 30~1시간동안 생각하고 안되면 꼭 chatgpt의 도움 받아서 해당 내용 정리해서 내 것으로 만들고 직접 입력해서 제출해야겠어요!! 

728x90
반응형

관련글 더보기