1388 바닥장식 [실버4] https://www.acmicpc.net/problem/1388 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws Exception { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(bf.readLine()); int height = Integer.parseInt(st.next..
알고리즘
10162 전자레인지 [브론즈4] https://www.acmicpc.net/problem/10162 import java.util.Scanner; //A:300초 B:60초 C:10초 public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int T = sc.nextInt(); if (T%10 != 0) { System.out.println("-1"); return ; } System.out.print("" + (T/300) +" "); T = T%300; System.out.print("" + (T/60) +" "); T = T%60; System.out.print("" + (T/1..
[1343] 폴리오미노(실버5) # 흐름대로 푼 풀이 import sys input = sys.stdin.readline board = input().strip().split('.') str = '' while(len(board) != 0): b = board.pop(0) if len(b) % 2 != 0: # X 개수가 홀수면 -1출력 str = '-1' break countA = len(b)//4 countB = (len(b)%4)//2 str += 'AAAA'*countA str += 'BB'*countB if len(board) != 0: str += '.' print(str) # 간단한 풀이 import sys input = sys.stdin.readline board = input().stri..
[10162] 전자레인지(브론즈4) import sys input = sys.stdin.readline N = int(input().strip()) if (N % 10 != 0): print('-1') else: A, B, C = 0, 0, 0 A = N // 300 N = N % 300 B = N // 60 N = N % 60 C = N // 10 print(A, B, C) 10의 배수가 아니면 답이 나올 수 없기 때문에 -1을 출력함 가장 큰 300초로 나눠서 몫을 구함 나머지를 60초로 나눠서 몫을 구함 나머지를 10초로 나눠서 몫을 구함 [2720] 세탁소 사장 동혁(브론즈3) import sys input = sys.stdin.readline N = int(input().strip()) case..
def solution(record): answer = [] Nick = {} for r in record: tmp = r.split(' ') if tmp[0] in ['Enter', 'Change']: Nick[tmp[1]] = tmp[2] for r in record: tmp = r.split(' ') if tmp[0] == 'Enter': answer.append(f"{Nick[tmp[1]]}님이 들어왔습니다.") elif tmp[0] == 'Leave': answer.append(f"{Nick[tmp[1]]}님이 나갔습니다.") return answer Nick: {"유저 아이디": "닉네임"}으로 구성된 딕셔너리. 해시를 사용하여 유저 아이디에 대응하는 닉네임을 구할 예정 1. record에서 ..
def solution(arr1, arr2): row = len(arr1) col = len(arr2[0]) answer = [[0 for b in range(col)] for a in range(row)] for i in range(row): for j in range(col): for k in range(len(arr2)): answer[i][j] += (arr1[i][k] * arr2[k][j]) return answer c언어로 풀듯이 풀어봤습니다. 학교 과제로 제출했던 기억이 나네요 1. 새로 만들어질 행렬은 (arr1의 행의 수, arr2의 열의 수)를 (행, 열)로 가짐. 만들어주고 0으로 초기화시켜줌 2. 3중 for문으로 행렬곱을 수행한 값 넣기(규칙 이용, 아래에 설명) 3. 만들어진 ..
def solution(s): minLen = len(s) for length in range(1, len(s)//2+1): change = "" tmp = s while True: if len(tmp)>=length: count = 1 word = tmp[:length] tmp = tmp[length:] while len(tmp)>=length and word == tmp[:length]: count+=1 tmp = tmp[length:] if count>1: change += (str(count)+word) else: change += word else: change += tmp break minLen = min(minLen, len(change)) return minLen length: 문자열을 자..
import heapq as hq def solution(s, K): answer = 0 hq.heapify(s) while s[0] -1을 반환 최..
def solution(n): lst = list(str(n)) lst.reverse() return list(map(int, lst)) 1. n을 문자열로 만들고, 각각 문자를 리스트로 만든다. 2. reverse 메서드를 이용해서 역으로 정렬해준다. 3. map으로 각각 요소값에 int를 적용시켜준 후, list로 형변환하여 반환한다. +) 더 줄인 풀이: reversed def solution(n): return list(map(int, reversed(str(n)))) 같은 방법은 맞는데, 한 줄로 처리한 코드이다. (좋아요 가장 많이 받은 풀이) 1. n을 문자열로 형변환하여 reversed의 입력값으로 넣는다. => 역순으로 정렬된 문자열 값들이 나옴 2. map으로 각각 요소에 int함수를 ..
def divList(n): lst = [] for i in range(2, int(n**(0.5))+1): while n%i == 0: lst.append(i) n = n//i if n!=1: lst.append(n) return lst def solution(n, m): A = divList(n) B = divList(m) A.append(0) B.append(0) GCD = [] LCM = [] i, j = 0, 0 val1, val2 = 1, 1 while A[i]!=0 and B[j]!=0: if A[i]==B[j]: GCD.append(A[i]) LCM.append(A[i]) i += 1 j += 1 elif A[i]>B[j]: LCM.append(B[j]) j += 1 else: LCM.ap..