Study/알고리즘 25

[프로그래머스] 문자열 계산하기

요즘 파이썬 문법이나 메서드에 익숙해지기 위해 프로그래머스 기초문제를 파이썬으로 풀고있다. def solution(my_string): arr = my_string.split(' ') answer = int(arr[0]) for i in range(len(arr)): if i % 2 != 0: if arr[i] == '+': answer += int(arr[i+1]) else: answer -= int(arr[i+1]) return answer 처음에 입출력 예를 보고 num1 num2 로만 나눴다가 연산자가 여러개인 경우가 있을 수 있어서 수정했다. 문자열을 한글자씩 쪼개서 배열에 넣어준 후 for문을 돌리면서 하나씩 꺼내는데 인덱스가 홀수일 경우(연산자가 있을 경우) 연산자가 +인지 -인지 확인한 후..

Study/알고리즘 2023.08.16

코딩테스트 입문

https://school.programmers.co.kr/learn/challenges/beginner 코딩테스트 입문 | 프로그래머스 스쿨 코딩테스트에 처음 도전하는 사람들을 위한 입문 문제 모음. 쉬운 문제부터 하나씩 도전해 보면서 코딩테스트에 자신감도 붙이고 문제 해결 능력을 키워보세요! school.programmers.co.kr 코테준비를 처음 시작하거나 프로그래머스 레벨 1도 어려운 사람들을 위해 만들었다는 문제 모음이라는데.... 사실 예전에 백준 문제를 풀기 전 프로그래머스에 들어갔다가 기나긴 서술형 문제와 IDE 도움 없는 실행화면을 보며 겁나서 바로 껐던 추억이 있다.ㅎㅎ 그래서 트위터에서 이 링크 소개를 보고 프로그래머스에 대한 두려움을 줄이고자 도전해보기로 했다. 하루 4문제씩 풀..

Study/알고리즘 2022.10.13

이것이 코딩 테스트다 - 그리디(거스름돈, 큰 수의 법칙)

최근 알고리즘 문제를 무작정 풀고 모르면 답을 보고 다음에도 비슷한 유형이 나오면 같은 방식으로 풀고... 하는 식으로 하다가 문제 유형을 먼저 공부해야 한다는 의견을 들어서 알고리즘 관련 서적을 구입했다. 책에 나온 코드는 파이썬으로 되어있지만 깃헙에 자바 코드도 올라와 있어서 참고하면서 풀어보기로 했다. 그리디 - 단순하지만 강력한 문제 해결 방법 - 현재 상황에서 지금 당장 좋은 것만 고르는 방법 - 매 순간 가장 좋아보이는 것으로 선택하며, 현재의 선택이 나중에 미칠 영향에 대해서는 고려하지 않는다 거스름돈 계산 문제 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가정한다. 손님에게 거슬러 주어야 할 돈이 N원일 때 거슬러 주어야 할 동전의 최소 개수를 구하..

Study/알고리즘 2022.08.26

백준 1267번 - 핸드폰 요금 JAVA

fee[i]/30 하고 +1 해야 한다는걸 검색하고서야 알게 되었다. ㅠ 1. 처음 주어지는 N을 두번째 주어지는 통화시간 배열의 개수라고 생각하고 그만큼 for문을 돌려 배열 안에 통화시간들을 담는다. 2. 영식 요금제와 민식 요금제의 식에 맞춰 각각의 값에 맞는 가격을 계산하여 더한다. 3. 두 값의 대소를 비교하고 양식대로 출력한다. public class Main { public static void main(String[] args) throws Exception{ Scanner in = new Scanner(System.in); int Y = 0; int M = 0; int N = in.nextInt(); int fee[] = new int [N]; for(int i=0; i

Study/알고리즘 2022.08.20

백준 1233번 - 주사위 JAVA

이 문제는 저번에 푼 문제처럼 for문을 여러번 돌리면 된다. 그런데 가장 많이 나온 수는 1157번 - 단어 공부 풀었을 때처럼 max에 자리바꿔주기 하면 되겠지 하면서 쓰다가 출력할 때 답이 여러개일 경우 가장 합이 작은 것을 출력해야 한다는 문구가 있어서 당황했다. 그래서 다른 블로그들을 참고해서 math.max()로 해결했다. math.max란? 두 개의 수 중 더 큰 수를 찾을 때 사용하는 함수이다. 이것으로 가장 많이 발생하는 수를 key에 저장해두고, 다시 for문을 돌려서 제일 작은 수일 때 break하면 된다. public class Main { public static void main(String[] args) throws Exception{ int S1, S2, S3; Scanner..

Study/알고리즘 2022.08.11
1 2 3