코딩 12

[프로그래머스 Lv3] - 숫자 게임 (Python)

def solution(A, B): answer = 0 A.sort() B.sort() for a in A : for b in B : if a < b : answer += 1 B.remove(b) break if B.index(b) == (len(B) -1) : minV = min(B) B.remove(minV) return answer 나는 A, B 모두 오름차순해서 작은 숫자부터 비교할거라서 이중 for 문 돌렸다 1) B 배열을 순회하면서 A 보다 커지는 B 가 나온다면 그대로 배치하고 break 2) 만약 끝까지 돌았는데도 A 보다 큰 수가 없다면 남아있는 B 원소 중 가장 작은 수 배치 - 어차피 A 보다 큰 수가 없다면 버리는 숫자로 젤 작은 숫자를 배치한다는 의미..!!! 정확성은 다 통과했..

알고리즘 2022.08.06

[프로그래머스 Lv2] 예상 대진표 (Python)

def solution(n, a, b): round = 1 while (True) : if a % 2 == 1 : a += 1 if b % 2 == 1 : b += 1 if a == b : break a //= 2 b //= 2 round += 1 return round 그냥 노트에 낙서하면서 아무 생각없이 코드 친 건데 얼떨결에 통과돼서 ????/!/?????!!!?? 함 일단 A 랑 B 랑 어느 라운드에서 만나는지만 알면 되고, A, B 이외에는 누가 이기던지 상관없기 때문에 무조건 짝수 번호가 올라온다고 가정하고 풀었다 그래서 A 랑 B 도 동일하게 홀수 번호이면 +1 해서 짝수 번호로 만들어줬고, 만약 A, B 둘 중에 누구 하나 +1 했는데 같은 번호가 된다는 건 결국 해당 라운드에서 경기하게 ..

알고리즘 2022.07.27

[프로그래머스 Lv1] 소수 만들기 (Python)

def solution(nums): answer = 0 li = set() for i in range(len(nums)-2) : for j in range(i+1, len(nums)-1) : for k in range(j+1, len(nums)) : li.add(nums[i] + nums[j] + nums[k]) li = list(li) li.sort(reverse=True) for idx in li : cnt = 0 for i in range(idx-1, 1, -1) : if idx % i == 0 : cnt += 1 break if cnt == 0 : answer += 1 return answer ?? 분명 테케는 다 맞았잔ㅎ아.... 왜 배신해 라며 한참 헤매다가 드디어 틀렸던 이유를 알아냄 "nu..

알고리즘 2022.07.06

[프로그래머스 Lv1] 예산 (Python)

def solution(d, budget): answer = 0 d.sort() cnt = 1 now = d[0] for i in d[1:] : if now + i > budget : break else : cnt += 1 now += i return cnt 실행했더니 테스트 케이스 하나가 실패라고 떴다 ,, 임의로 테케 몇 개 집어넣어서 돌려보다가 드디어 발견함 생각해보니까 초기값을 1로 주면 안 됐음 ㅎㅎ budget 이 제일 작은 금액보다 더 작을 수도 있기 때문에 ,, def solution(d, budget): answer = 0 d.sort() cnt = 0 now = 0 for i in d : if now + i > budget : break else : cnt += 1 now += i re..

알고리즘 2022.07.02

[프로그래머스 Lv2] 카펫 (Python)

def solution(brown, yellow): total = brown + yellow num = [] idx = 3 while (True) : if total % idx == 0 : if idx > total // idx : break num.append([total // idx, idx]) idx += 1 for n in num : temp = (n[0]-2)*2 + n[1]*2 if temp == brown : return [n[0], n[1]] break 그냥 로직만 잘 짜면 금방 해결할 수 있는 문제였다 일단 (brown + yellow) 의 약수를 구해주는데, 1과 2는 가로/세로 길이가 될 수 없기 때문에 애초에 idx 를 3으로 초기화시켜줌. 그리고 가로 길이가 세로 길이보다 더 커야..

알고리즘 2022.07.02

[프로그래머스 Lv2 - 2019 KAKAO BLIND RECRUITMENT] 오픈채팅방 (Python)

def solution(record): li = dict() answer = [] sen = [] for i, rec in enumerate(record) : rec = rec.split() op = rec[0] id = rec[1] if op == "Enter" : name = rec[2] if id in li.keys() : if li[id] != name : idx = [i for i, x in enumerate(sen) if x[0] == id] for i in idx : sen[i][1] = name li[id] = name sen.append([id, name, 1]) elif op == 'Leave' : name = li[id] sen.append([id, name, 2]) else : na..

알고리즘 2022.07.02

[프로그래머스 Lv1 - 2018 KAKAO BLIND RECRUITMENT] 다트 게임 (Python)

def solution(dartResult): answer = 0 count = [] option = [i for i, x in enumerate(dartResult) if x in ['*', '#']] bonus = [i for i, x in enumerate(dartResult) if x in ['S', 'D', 'T']] for idx in bonus : try : temp = int(dartResult[idx-2:idx]) if dartResult[idx] == 'D' : count.append(10 ** 2) elif dartResult[idx] == 'T' : count.append(10 ** 3) else : count.append(10) except Exception as e: # prin..

알고리즘 2022.07.01