본문 바로가기

CodingTest

(238)
[ 프로그래머스 ] 스킬체크 굿스타터 프로그래머스에 들어갔는데 전과 다른 UI라 다른 사이트인 줄 알았습니다. 사이트 리뉴얼을 했네요! 처음 보는 '스킬체크'라는 섹션이 생겨서 흥미로워서 들어갔습니다. ??: "Code first! 프로그래밍 스킬을 확인하세요." !!: "넵" 안 그래도 이번 코테 망쳐서 속상해하고 있는 와중에 다시 실력 객관화할 좋은 툴인 것 같아 냉큼 풀어봤습니다. 최소한의 컴퓨터 사고력은 있다고 합니다. 이번에 멘탈 나가서 그것도 안 된다고 생각했는데.. 괜찮아 넌 왕기초는 아니란다 ~ 그냥 잘 못 하는 것뿐이지~ 뭐 이런 사소하고 따뜻한 위로가 된 것 같습니다. 40분이 제한 시간이긴 한데 제한 시간 절반 정도 쓸 난이도였습니다. 시간이 길지 않은 테스트니 매일매일 다음 것도 하면 재밌을 것 같습니다. 문제를 골라서..
[ 프로그래머스 ] 문자열 내 마음대로 정렬하기 / 제출 1 / ''' 문제 인풋-아웃풋: n이 주어졌을 때, 인덱스 n기준으로 각 단어를 정렬 주요 예외: ! 해당 인덱스 자리 문자가 같으면 ! 단어 전체가 사전순으로 앞선게 앞으로 # 1. string을 돌며, [해당 인덱스 자리 문자, 해당 단어] 원소를 리스트에 넣기 # 2. 1의 리스트를 [0]기준 정렬, [1]길이 기준 정렬 # 3. 2처리 끝난 리스트를 [0] 순서대로 뽑아 answer에 넣기 ## strings: 100 * 50 이므로 O(n), O(nLogn), O(n) 무리 없다고 판단 ''' def solution(strings, n): answer = [] charAndWordList = getCharWordList(strings, n); print(charAndWordList) ..
[ 프로그래머스 ] [1차] 다트게임 / 제출 1 / def solution(dartResult): darts = list(dartResult.strip()) result = [] num = 'ss' for dart in darts: print(num, dart, result) # 숫자 저장 if dart.isdigit(): if num == 1 and dart == '0': print('10') num = 10 if num != 'ss': result.append(num) print(result) num = -1 num = int(dart) # S,D,T에 따라 곱해주기 elif dart == 'S': num = num ** 1 elif dart == 'D': num = num ** 2 elif dart == 'T': num = num *..
[ 백준 / BOJ ] 2064 IP주소 * 다시 풀기 * 아 .. 얼마 전에 파이썬으로 비트연산하는 거 봐서 가뿐하게 할 수 있을 줄 알았는데.. IP주소 개념 학습이 안되어서 못 푸는 건가.. 하.. / 제출 1 / n = int(input()) ip = [] for i in range(n): ip.append(list(map(int, input().split('.')))) ipCopy = ip.copy() ipAnd = [ipCopy.pop()] while ipCopy: x = ipAnd.pop() y = ipCopy.pop() z = [] for i in range(len(x)): z.append(x[i] & y[i]) ipAnd.append(z) # ipAnd : 주소 address = ipAnd[0] print(*map(str,address), sep..
[ 백준 / BOJ ] 나3곱2 / 제출 1 / n = int(input()) B = list(map(int, input().split())) # 나3, 곱2 => 곱3, 나2 해서 값 나오면 해당 숫자의 이전 값, 둘이 붙여 # 만약 둘 다 안 되면 그게 첫 번째 값 order = [] for num in B: mulThree = num * 3 if num % 2 == 0: divTwo = num // 2 else: divTwo = 0 if divTwo in B: order.append([divTwo, num]) continue elif mulThree in B: order.append([mulThree, num]) continue else: order.append([0, num]) result = [] start = 0 next =..
[ 백준 / BOJ ] 2504 괄호의 값 / 첫 구현 / from collections import deque import sys bracket = list(sys.stdin.readline().strip()) calc = [] so = 0 dae = 0 temp = deque([]) while bracket: now = bracket.popleft() if now == '(': calc.append(2) so += 1 next = bracket.popleft() if next != ')': # 안에 뭐 있으면 calc.append('x') calc.append('(') while so > 0: temp.append(next) if next == elif now == '[': calc.append(3) dae += 1 if bracket[0] ..
[ 백준 / BOJ ] 1966 프린터 큐 / 제출 1 / from collections import deque T = int(input()) for _ in range(T): n, target = map(int, input().split()) docs = enumerate(list(map(int, input().split()))) docs = deque(docs) print(docs) count = 0 while docs: now = docs.popleft() count += 1 if docs: for doc in docs: if now[1] < doc[1]: count -= 1 docs.append(now) break if now[0] == target and now not in docs: break print(count) 풀이 소요시간: 2..
[ 프로그래머스 ] 자물쇠와 열쇠 / 제출 1 / def solution(key, lock): answer = False # 키 끼워넣을 공간 위해서 Lock늘려주기 n = len(lock) new_lock = [[0]*(n+2*(n-1)) for _ in range(n+2*(n-1))] for i in range(n): for j in range(n): new_lock[n-1+i][n-1+j] = lock[i][j] # 키 4방향으로 확인 for i in range(4): key = list(map(list, rotate_key(key))) # 시계반대방향회전 answer = push(key, new_lock) if answer: break return answer def rotate_key(key): return list(revers..
[ 프로그래머스 ] 거리두기 / 제출 1 / def check_if_partitions(place, a, b): #there is partitions if abs(a[0] - b[0]) == 2: if place[max(a[0],b[0])-1][a[1]] == ('X' or 'P'): return True elif abs(a[1]-b[1]) == 2: if place[a[0]][max(a[1],b[1])-1] == ('X' or 'P'): return True else: # 1, 1 씩 차이 if place[max(a[0],b[0])][min(a[1],b[1])] == ('X' or 'P') and place[min(a[0], b[0])][max(a[1],b[1])] == ('X' or 'P'): return True return ..
[ 백준 / BOJ ] 16924 십자가 찾기 / 제출 1 / n, m = map(int, input().split()) answer = [] board = [] # 상 하 좌 우 dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] cannot = [] for i in range(n): board.append(list(input().strip())) for x in range(n): for y in range(m): if board[x][y] == '*': size = 1 check = True while check: # check 4 directions for i in range(4): nx = x + dx[i] * size ny = y + dy[i] * size if nx < 0 or n 0: answer.append([x, y,..