[programmers] 파일명 정렬
로직 - ls = [(head, numbers, 몇번째 파일인지), (head, numbers, 몇번째 파일인지), (head, numbers, 몇번째 파일인지)] 정렬한 후 sort한다. - ls만드는 방법 1) 정규식 사용 2) for문 돌리면서 직접 구현(내 코드) -> 이때, head, numbers의 index를 하나씩 바꿔가면서 최종적인 값 내기 - head : 숫자가 나오기 마지막 문자인 곳 numbers : 앞에서부터 숫자가 나온곳부터 시작해서 다시 문자열 나오기 바로전까지 tail : 굳이 나타낼 필요없다 -> tail로는 정렬하지 않기 때문 - 몇번째 파일인지 작성하는 이유 : 두 파일의 HEAD 부분과, NUMBER의 숫자도 같을 경우, 정렬 후에도 입력 시 주어진 두 파일의 순서가 ..
더보기
[programmers] 뉴스 클러스터링
로직 1. one, two를 대문자로 통일한 후, 합집합, 교집합을 구한다. ** 문제점 : union, interaction은 set일 때 사용가능 - set하게 되면 만약, one = ['AA', 'AA'], two = ['AA', 'AA', 'AA']라면 set_one = set_two = {'AA'}로 동일해진다 ** 해결책 : 1) Counter함수 사용해서 union, interaction를 사용한다. 2) make_interaction함수를 만들어 교집합만 구하면 one, two, interaction(one, two)갯수로 합집합을 구한다. 나는 2)을 택했다. 코드 def solution(str1, str2): def make_split(word): answer = [] for i in ..
더보기
[programmers] 튜플
로직 1. s = "{{2},{2,1},{2,1,3},{2,1,3,4}}" 를 s = [{2}, {2,1}, {2, 1, 3}, {2, 1, 3, 4}]로 바꾼 후 set안에 들어있는 갯수가 1부터 나열될 수 있도록 정렬한 후, result 안에 없는 값들만 넣어주기 2. 주의 : 원래 s[1:-1].split(',')해서 할랬는데, ['{20', '111}', '{111}']가 되어버린다. 이거를 문자열 안에 {}도 있어서 뽑아 내야하는 것들이 많다. -> s = s[2:-2].split('},{')하면 ['20, 111', '111']로 나온다. 코드 def solution(s): result = [] ss = s[2:-2].split('},{') # ['20,111', '111'] sss = sor..
더보기
[baekjoon] 14888. 연산자 끼워넣기
로직 + 주의해야하는 점 1. 문제에서 말하는 그대로 +, -, x, %를 구분해 코드를 작성하면 된다 2. ** 문제점 : 나누기할 때, /로 나눈 다음에 int를 씌워서 나머지를 없앤다(처음에 //를 했다가 답이 제대로 안나옴) 코드 from itertools import permutations N = int(input()) numbers = list(map(int, input().split())) calcu = list(map(int, input().split())) eq = ['+', '-', '*', '/'] eq_t = [] for i in range(4): eq_t += eq[i] * calcu[i] result = list(permutations(eq_t, N-1)) answer = [] ..
더보기