본문 바로가기

분류 전체보기

(264)
11866 요세푸스 문제 0 / 큐, 덱 DequeStack으로 사용하는 법dq.append(값)dq.pop()오른쪽이 일반 기준이라고 생각하면 됨Queue로 사용하는 법dq.append(값)dq.popleft()rotate()rotate 값이 음수인 경우왼쪽으로 큐가 돌게 됨 -> 앞쪽에 있는 요소가 뒤로 가게 됨 rotate 값이 양수인 경우왼쪽으로 큐가 돌게 됨 -> 뒤쪽에 있는 요소가 앞으로 가게 됨 정답코드import collectionsn, k = map(int, input().split())deque = collections.deque()ans = []for i in range(1, n+1): deque.append(i)idx = 0while 0 ", end="")
2609 최대공약수와 최소공배수 / 정수론 및 조합론 최소공배수 -> 최대공약수 * 첫번째 수를 최대공약수로 나눈 몫 * 두번째 수를 최대공약수로 나눈 몫최대 공약수 -> 둘 중에 더 큰 범위까지의 수 중에서 두 수가 모두 나머지가 0이 되는 수number1, number2 = map(int, (input().split()))end = max(number1, number2)max_number = 0for i in range(1, end+1): if number1 % i == 0 and number2 % i == 0: max_number = imin_number = (number1 // max_number) * (number2 // max_number) * max_numberprint(max_number)print(min_number)
행렬의 덧셈 / 프로그래머스 행렬의 덧셈def solution(arr1, arr2): answer = [] for i in range(len(arr1)): row = [] for j in range(len(arr1[i])): row.append(arr1[i][j] + arr2[i][j]) answer.append(row) return answer 직사각형 별찍기a, b = map(int, input().strip().split(' '))for i in range(b): for j in range(a): print("*", end="") print() 최대공약수와 최소공배수def solution(n, m): answer = [] ..
객체지향적인 계산기 만들기 : 멘토님 코드와 나의 코드간의 개선점 비교 입출력 멘토님 코드음수 입력시에 재입력을 받도록 처리가 되어 있음if (firstNumber   세이프티 코딩 (Safety Coding) 적용문자열 비교 시 변수에 담지 않고, 해당 문자열 자체로 equals를 사용하여 비교함 -> 세이프티 코딩 (Safety Coding)널은 메서드를 사용하지 못하기 때문에 스트링으로 비교하면 프로그램이 종료됨NullPointerException 방지if ("exit".equals(sc.next())) { break; } 기존에 내가 작성한 코드변수명에 널이 들어갈 수 있기 때문에 위험함String exit = sc.nextLine(); exit = exit.toLowerCase(); ..
제네릭 타입제한과 필드에서의 값 전달 (feat : 계산기 과제) 제네릭 타입 제한제네릭 타입 제한은 클래스, 메서드, 인터페이스 선언 부분에서만 가능함public class Calculator { private final List resultList = new ArrayList(); // T는 Number의 하위 타입} 클래스에서 T의 제한을 걸면, 타입의 제한이 클래스 내부 전체에 걸림public class Calculator { private final List resultList = new ArrayList(); // T는 Number의 하위 타입} -> 지난번에 내가 과제에서 수행했던 것처럼 메서드 수준에서 제네릭 제한을 걸어버리면, results 에 타입을 Number로 지정해서 해결했어야 했음 지난번 짠 코드private List results ..
자바 알고리즘 연습(8) 부족한 금액 계산하기class Solution { public long solution(int price, int money, int count) { long answer = 0; long s = 0; for (int i = 1; i 0){ return 0; } else { answer = (money - s) * -1; return answer; } }} 문자열 다루기 기본숫자로만 이루어졌는지 확인하는 함수 : "asdfs".isdigit()문자로만 이루어졌는지 확인하는 함수 : "234".isalpha(), Character.isDigit(s.charAt(i))def ..
10814 나이순 정렬 / 정렬 n = int(input())members = []sequence = 1for _ in range(n): age, name = input().split() members.append([int(age), name, sequence]) sequence += 1members.sort(key = lambda m : (m[0], m[2]))for i in members: print(str(i[0]) + " " + str(i[1])) JAVAsc.next() : 입력 스트림에서 공백을 기준으로 하나의 단어를 읽어옴Arrays.sort() : 안정 정렬 특성을 가짐 -> 정렬 기준이 같은 값들에 대해 기존 순서를 유지하는 정렬 즉, 입력받은 순서대로 유지import java.util.Scanne..
자바 알고리즘 연습(7) 가운데 글자 가져오기String을 char배열로 : 변수명.charAt(index접근 가능);class Solution { public String solution(String s) { String answer = ""; if (s.length() % 2 == 0){ answer += s.charAt(s.length() / 2 - 1); answer += s.charAt(s.length() / 2); } else { answer += s.charAt(s.length() / 2); } return answer; }} 수박수박수박수박수박수?class Solution { p..