1 minute read

오늘 한 리스트

  1. 프로그래머스 정렬 2 문제
  2. 프로그래머스 완전탐색 4 문제

이 포스팅도 github 연결이 끊기면서 날라가버렸다… 최대한 기억나는대로만 정리해놔야겠다.

프로그래머스 정렬 가장 큰 수

  • 문제 유형 : 정렬
    가장 큰 수 찾기
    def solution(numbers):
      numbers_t=[i*3 for i in map(str,numbers)]
      test=sorted(numbers_t,reverse=True)
      answer=""
      zero=0
      for i in test:
          if i=="000":
              zero+=1
              continue
          answer+=i[:int(len(i)/3)]
            
      if zero>0:
          for i in range(zero):
              answer+="0"
          return str(int(answer))
      else:
          return str(int(answer))
    

    int한 후에 str을 해줘야 올클이 됬던걸로 기억난다 0002 => 2로 바꾸기 위해서!

프로그래머스 정렬 H-Index

  • 문제 유형 : 정렬
    H-Index 찾기
    def solution(citations):
      citations=sorted(citations)
      length=len(citations)
      test=[]
      for i in range(length):
          if citations[i]>=length-i:
              return length-i
      return 0
    

    거꾸로 생각하면 생각보다 쉬웠던 문제였다.

프로그래머스 완전탐색 최소직사각형

  • 문제 유형 : 완전탐색
    최소직사각형 찾기
    def solution(sizes):
      answer = 0
      max_1,min_1=[],[]
      for i in sizes:
          if i[0]>=i[1]:
              max_1.append(i[0])
              min_1.append(i[1])
          else:
              max_1.append(i[1])
              min_1.append(i[0])
        
      return max(max_1)*max(min_1)
    

    가장 큰쪽과 작은 쪽을 나눠서 계산

프로그래머스 완전탐색 모의고사

  • 문제 유형 : 완전탐색
    모의고사 점수 보기
    def solution(answers):
      type_1=[1,2,3,4,5]
      type_2=[2,1,2,3,2,4,2,5]
      type_3=[3,3,1,1,2,2,4,4,5,5]
      res_result=[]
      answer=[0,0,0]
      while answers:
          type_list=[type_1.pop(0),type_2.pop(0),type_3.pop(0)]
          ans=answers.pop(0)
          ans_list=[ans for i in range(3)]
          result_list=[1 if i==j else 0 for i,j in zip(type_list,ans_list)]
          answer=[i+j for i,j in zip(result_list,answer)]
          type_1.append(type_list[0]), type_2.append(type_list[1]), type_3.append(type_list[2])
      max_res=max(answer)
      if answer[0]==max_res:
          res_result.append(1)
      if answer[1]==max_res:
          res_result.append(2)
      if answer[2]==max_res:
          res_result.append(3)
      return res_result
    

    단순 반복으로 풀었다.

프로그래머스 완전탐색 소수 찾기

  • 문제 유형 : 완전탐색
    소수 찾기
    from itertools import *
    def solution(numbers):
      answer = 0
      length=len(numbers)
      print_list=[]
      for i in range(1,length+1):
          print_list+=list(permutations(numbers,i))
      #print_list=list(set(print_list))
      all_list=[] 
      for i in print_list:
          result_number=''
          for j in i:
              result_number+=j
          input=int(result_number)
          all_list.append(input)
      for k in list(set(all_list)):
          if k>1:
              for i in range(2,int(k/2)+1):
                  if (k%i)==0:
                      break
              else:
                  answer+=1
      return answer
    

    가장 중요했던 건 2로 나누고 +1 더한 값들의 나눗셈이 있으면 소수가 아님을 보였다.

프로그래머스 완전탐색 카펫

  • 문제 유형 : 완전탐색
    카펫
    import math
    def solution(b, y):
      b_p_xy=int((b+4)/2)
      result=[]
      for i in range(1,b_p_xy):
          if i*(b_p_xy-i)==b+y:
              result.append(i)
      if len(result)!=1:
          return [result[1],result[0]]
      else:
          return [result[0],result[0]]
    

    수식을 세우고 그 수식에 맞게 코드를 짯던 기억이 난다.

Categories:

Updated:

Leave a comment