Python : repl 문제 풀이

Jinsung·2021년 11월 6일
0

python

목록 보기
25/25
post-custom-banner

어려웠던 문제 복습

43번 문제

문제

풀이

1번째 방법

result라는 빈 list를 만들고 count메소드로 개수가 1인 리스트만 a에 넣어 출력하는 방법

my_list = [1, 2, 3, 4, 5, 1, 2, 3, 7, 9, 9, 7]
a = []
for i in my_list:
  if my_list.count(my_list[i]) == 1:
    a.append(my_list[i])
print(a[0])
print(a[1])

2번째 방법

a에 my_list를 복사 후 a에서 리스트 값이 2 이상 값만 my_list에서 삭제

my_list = [1, 2, 3, 4, 5, 1, 2, 3, 7, 9, 9, 7]
a = list(my_list)
for i in a:
  if a.count(i) > 1:
    my_list.remove((i))

for i in my_list:
  print(i)

3번째 방법

my_list에서 개수가 1인 list값은 출력

my_list = [1, 2, 3, 4, 5, 1, 2, 3, 7, 9, 9, 7]

for i in my_list:
  if my_list.count(i) == 1:
    print(i)

37번 문제

1번째 방법

if문에 값이 없으면 빈리스트를 반환하는 조건을 걸고 리스트를 합친후 맨 앞 인덱스와 맨 뒤에 있는 인덱스에 변수를 두어 할당하는 방식 이요

def merge_and_swap(list1, list2):
    
    if len(list1) == 0 and len(list2) == 0:
      return []
      
    list1 = list1 + list2
    
    frist = list1[0]
    last = list1[-1]

    list1[0] = last
    list1[-1] = frist
    return list1

2번째 방법

조건은 위 와 같이 걸고 리스트를 합친 후 맨앞 인덱스와 맨뒤 인덱스에 동시에 할당하는 방법

if len(list1) == 0 and len(list2) == 0 :
    return []
  list1 = list1 + list2
  list1[0], list1[-1] = list1[-1], list1[0]

50번 문제

1번째 방법

빈 dictionary를 만들고 반복문 for을 이용 my_list값을 i에 할당 한 후 안 에 my_dict 키값이 있으면 +1 없으면 그냥 1로 개수를 넣는방식

def get_occurrence_count(my_list):
my_dict={}
  
  for key in my_list:
    if key in my_dict:
      my_dict[key] +=1
    else:
      my_dict[key] = 1 
  
  return my_dict

2번째 방법
빈 dictionary에 for문을 통해 키값을 할당한 후 카운트 메소드 이용해서 value값을 넣어준다.

  my_dic = {}
  for i in my_list:
    my_dic[i] = my_list.count(i)
# 함수를 완성해 주세요.
  return my_dic

52번 문제

1번째

sum number는 생략 밑에 first와 last 이름의 value값을 가지고와서 위치를 바꾸는 문제인데 조건을 걸어서 진행 둘다없으면 nobody 하나만 있는경우 있는것만 출력 둘만있을경우 위치를 바꾸어 출력 이렇게 조건을 걸었다

def sum_of_numbers(*args):
    # 아래에 코드를 작성해 주세요.
    sum = 0
    for i in args:
      if i == None:
        return 0
      else:
        sum += i
    return sum
    
    
    
    
    
def what_is_my_full_name(**kwargs):
    #아래에 코드를 작성해 주세요.
   
    if "first_name" not in kwargs and "last_name" not in kwargs:
      return "Nobody"
    elif "first_name"  in kwargs and "last_name" not in kwargs:
      return kwargs.get("first_name")
    elif "first_name"  not in kwargs and "last_name" in kwargs:
      return kwargs.get("last_name")
    else:
      return kwargs.get("last_name")+" " + kwargs.get("first_name")

55 문제 Class

Assignment
Class 를 직접 구현해 보겠습니다.

Database 라는 이름의 class를 구현해 주세요.

Database 클래스 내부에 다음의 속성(attribute)들을 선언해주세요.

#문제풀이 1
name : database의 이름
size : 저장할 수 있는 데이터의 max 사이즈. Size를 넘어서는 데이터를 저장할 수 없다.
Database 클래스 내부에 다음의 메소드들을 구현해주세요.

insert
select
update
delete
각 메소드들에 대한 설명은 아래와 같습니다.

#문제풀이2
Insert
insert 메소드는 self 외에 2개의 parameter를 받습니다.

field와 value 입니다.

Field 는 저장하고자 하는 데이터의 필드명이고 value는 값입니다.

Field 와 value는 내부적으로 dictionary에 저장되어야 합니다.

insert 메소드는 다음 처럼 호출 할 수 있습니다.

# 객체 이름이 db 라는 가정하에
db.insert("name", "정우성")
# 객체 이름이 db 라는 가정하에
db.insert("name", "정우성")
insert 메소드는 특별한 return 값은 없습니다.

단, 만일 내부 dictionary의 총 사이즈가 Database 클래스의 size 속성보다 크면 더이상 새로운 값들을 저장하지 말아야 합니다.

#문제풀이3
Select
select 메소드는 self 외에 1개의 parameter를 받습니다.

바로 field 입니다.

field 는 읽고자 하는 데이터의 필드명 입니다.

내부적으로 데이터를 저장하고 있는 dictionary에서 해당 field에 해당하는 키와 연결되어 있는 값을 return 해주어야 합니다.

예를 들어, 이미 name이라는 필드명으로 "정우성" 이라는 값을 저장했다고 한다면:

# 객체 이름이 db 라는 가정하에
db.select("name")
> "정우성"
# 객체 이름이 db 라는 가정하에
db.select("name")
> "정우성"
이 되어야 합니다.

만일 해당 필드값으로 저정되어 있는 값이 없다면 None 을 return 해주세요.

#문제풀이4
Update
self 외에 2개의 parameter를 받습니다.

field와 value 입니다.

이름 그대로 이미 저장되어 있는 값을 수정하는 메소드 입니다.

# 객체 이름이 db 라는 가정하에
db.update("name", "아이유")
# 객체 이름이 db 라는 가정하에
db.update("name", "아이유")
만일 field값에 해당하는 데이터가 저장되어 있지 않으면 아무것도 하지 않습니다.

그리고 특별한 return 값은 없습니다.

#문제풀이5
Delete
delete 메소드는 self 외에 1개의 parameter를 받습니다.

field 입니다.

field 는 지우고자 하는 데이터의 필드명 입니다.

# 객체 이름이 db 라는 가정하에
db.delete("name")
# 객체 이름이 db 라는 가정하에
db.delete("name")
만일 field값에 해당하는 데이터가 저장되어 있지 않으면 아무것도 하지 않습니다.

그리고 특별한 return 값은 없습니다.

문제풀이1

이번 문제는 클래스에 메서드를 추가하는 문제로 메서드에 2개의 인자를 self로 재정의 한다

self로 재정의 하는 이유

self는 객체의 인스턴스 그 자체를 말한다. 즉, 객체 자기 자신을 참조하는 매개변수인 셈이다. 객체지향 언어는 모두 이걸 메소드에 안보이게 전달하지만, 파이썬은 클래스의 메소드를 정의할 때 self를 명시한다. 메소드를 불러올 때 self는 자동으로 전달된다. self를 사용함으로 클래스내에 정의한 멤버에 접근할 수 있게된다.

class Database:
  def __init__(self, name, size):
  # 아래에 코드를 작성해 주세요.
    self.name = name
    self.size = size
    self.dic = {} 

문제풀이2

field와 value를 받아 나타낸다는 거로보아 딕션너리 필요 위 코드에 정의해주고 조건 딕션너리 개수가 사이즈보다 크면 안돼다는 조건을 걸어 field라는 키에 value라는 값을 정의하게 해준다.

  def insert(self, field, value):
   # 아래에 코드를 작성해 주세요.
    if len(self.dic) < self.size:
      self.dic[field] = value

문제풀이3

select 메소드에 field라는 인수값이 dic에 있으면 value를 리턴해주는 조건문을 작성

  def select(self, field):
   # 아래에 코드를 작성해 주세요.
    if field in self.dic:
      return self.dic[field]
    else:
      return None

문제풀이4

update 메소드에 field라는 인수가 dic안에 있으면 value값을 재정의 한다.if문으로 dic key값와 update 인수가 동일 하면 value재정의 한다.

  def update(self, field, value):
   if field in self.dic.keys():
     self.dic[field] = value

문제풀이5

field라는 인수가 있으면 삭제처리

  def delect(self, field):
   if field in self.dic.keys():
     del self.dic[field]
post-custom-banner

0개의 댓글