본문 바로가기

프로그래머스 문제풀어보기61

[Lv.0] 분수의 덧셈 https://school.programmers.co.kr/learn/courses/30/lessons/120808# 두 분수의 합은 분모끼리 곱하고 , 분자엔 분모에 곱한값을 곱한후 나온 값을 더한 후 나온 분자와 분모의 공통된 약수로 나누면 된다. 이 공식을 이용해 약수로 나누기전 int a엔 분자 Int b엔 분모를 넣어주었다. 반복문을 활용해 분자 a의 약수들을 구한다. 분자 본인은 무조건 약수로 가지기 때문에 a-1부터 시작해서 2까지 반복하고 증감연산자로 int i의 값을 1씩 빼준다. 분자와 분모 둘다 나눌 수 있는 약수를 구해야하기 때문에 조건식에 분자 a를 나눠 나머지값이 0이고 분모 b를 나눠 나머지값이 0인 i 값을 구한다. 그 후 분자 a 와 분모 b를 i로 나눈값을 넣어주고, 분자.. 2023. 4. 5.
[Lv.0] 팩토리얼 https://school.programmers.co.kr/learn/courses/30/lessons/120848 어렵게 짰다가 테스트 5번만 계속 실패하길래 초기화 한다음에 천천히 다시 생각해서 문제를 해결했다. 조건식에서 정수 n은 0 2023. 4. 5.
[Lv.0] 옹알이(1) https://school.programmers.co.kr/learn/courses/30/lessons/120956 처음에 짠 못생긴 코드를 테스트용으로 채점했는데 통과되어서 조금 더 수정해서 다시 채점했다. 우선 필요한 문자들을 String 배열 words에 등록해주었다. 그 후 babbling에 있는 문자열들을 하나하나 다 비교해봐야하기 때문에 babbling에 길이만큼 반복문을 작성해준다. 그리고 words에 있는 문자열들이 babbling에 있는 문자열들에 들어 있다면 replace를 이용해 1로 변경해준다(빈칸과 영어가 아니라면 어떤것으로 해도 상관없다) 왜 빈칸으로 하면 안되냐면 "wyeoo" 같은 경우 때문에 그렇다. "wyeoo"에는 "ye" 가 들어가 있어서 빈칸으로 치환되면 "woo" .. 2023. 4. 4.
[Lv.0] 다음에 올 숫자 https://school.programmers.co.kr/learn/courses/30/lessons/120924 등차수열 : 연속하는 두 항의 차이가 모두 일정한 수열 (feat.위키백과) 등비수열 : 각 항이 초항과 일정한 비를 가지는 수열 (feat.위키백과) 이기 때문에 극 항들의 차이를 보자 첫 번째 배열을 보면 [1,2,3,4] 로 각 항들이 1씩 차이나게 된다. 두 번째 배열은 [2,4,8] 로 각 들이 2배씩 증가하게 된다. 첫 번째 배열은 common[0]와 common[1] 이 1차이나고 common[1]와 common[2] 가 1차이가 난다. 두 번째 배열은 common[0]의 2배가 common[1] 이고 common[1]의 2배가 common[2] 이다. 그래서 해당 조건식을 .. 2023. 4. 4.
[Lv.0] 문자열 계산하기 https://school.programmers.co.kr/learn/courses/30/lessons/120902# 문자열 my_string 안에 숫자와 연산자는 공백 하나로 구분되어 있다고 나와있기 때문에 String.split(" ")을 활용해 문자열 my_string을 배열로 만든다. 0으로 시작하는 수는 주어지지 않고, 잘못된 수식은 주어지지 않기 때문에 문자열 my_string을 이용해 만든 배열 arr에 제일 앞에 있는 건 숫자로 시작할 것이다. 그렇기 때문에 answer에는 배열 arr에 0번째 자리에 있는 값을 선언하였다. string인 arr[0]을 int인 answer에 넣기 위해선 Integer.parseInt() 를 활용해 형변환을 한 후 넣어주었다. 반복문을 활용해 arr의 0번.. 2023. 4. 1.
[Lv.0] 숨어있는 숫자의 덧셈 (2) https://school.programmers.co.kr/learn/courses/30/lessons/120864 처음엔 my_string을 배열로 바꿔 replacse로 영어 대소문자들을 전부 빈칸으로 치환했었지만, 그러면 연속적인 수는 하나로 간주한다는 조건에 부합하지 않아 다시 작성하였다. 우선 문자열 my_string을 영어 대소문자만 표현하는 정규표현식"[a-zA-Z]"과 split를 활용해 빈칸들과 숫자들만 남겨놓는다. 그 후 반복문을 활용해서 arr에 빈칸이 있다면 0으로 바꾸고 빈칸이 아니라면 Integer로 형변환을 한 후 나온 값들을 answer에 저장하면 해결된다. class Solution { public int solution(String my_string) { int answe.. 2023. 3. 23.
[Lv.0] 컨트롤 제트 https://school.programmers.co.kr/learn/courses/30/lessons/120853 문제를 풀고 다른분들 풀이를 보니 stack을 이용해서 푸신분들이 많았다. 다른분들 풀이를 보면서 한 번 더 훑어 보기로하고 글을 작성하려고 했는데 방법이 많이 다르고 간단해서 부끄럽지만 이또한 해결된 방법이라서 작성하기로 했다. 우선 문자열 s는 공백으로 숫자들과 Z가 구분되어 있다. 그래서 String 배열 arr에 빈칸(" ")을 기준으로 split을 활용해 문자열 s의 값들을 저장하였다. 그 후 배열 arr에 Z가 존재한다면 기호 minus를 포함해서 concat을 활용해 그 이전자리에 있던 숫자로 치환해주었다. 이렇게 하자 Z이전에 숫자가 원래 -를가지고 있던 문자들은 concat.. 2023. 3. 22.
[Lv.0] 영어가 싫어요 https://school.programmers.co.kr/learn/courses/30/lessons/120894 단순하게 작성하였다. 처음엔 주어진 zero~nine까지의 String 배열로 만들어서 반복문을 활용해 작성할까 했지만 그냥 간단하게 작성했다. replace("변경 전 문자열","변경 후 문자열")을 활용해 zero ~ nine까지 변경한것을 바로 numbers에 값을 저장하였다. 그래서 나온 String numbers를 Long으로 형변환을 해줘야한다. Long.parseLong(문자열) 을 활용해 나온 값을 리턴해주면 해결된다. class Solution { public long solution(String numbers) { long answer = 0; numbers = numbe.. 2023. 3. 22.
[Lv.0] 종이자르기 https://school.programmers.co.kr/learn/courses/30/lessons/120922 가로로 자르든 세로로 자르든 한 번에 쭉 자르고 나머지 조각들을 1X1에 맞게 자르는게 최소한의 가위질로 종이를 자를 수 있는 방법이다. 여기선 세로를 기준으로 일자로 자른 후 나머지 조각들을 1X1에 맞게 자를예정이다. 세로가 2 일땐 한번의 가위질 3일땐 두번의 가위질로 자를 수 있다 즉 일자로 잘라 세로가 1인 종이조각들을 만들기 위해서는 세로의 길이에서 1을뺀 (a-1) 번의 가위질이 필요하다는 것을 알 수 있다. 이제 세로가 1인 종이가 원래의 종이의 세로의 길이만큼(a) 나왔다. 이제 그 종이들을 가로로 자를것인데 이도 마찬가지로 1x1의 종이로 만들기 위해선 가로의 길이에서 1.. 2023. 3. 22.
[Lv.0] 잘라서 배열로 저장하기 https://school.programmers.co.kr/learn/courses/30/lessons/120913 문자열 my_str이 무조건 n으로 나눠지는게 아니기 때문에 길이를 지정할 때 n으로 나누어진다면 문자열 my_str을 n으로 나누고 그렇지 않다면 n으로 나누고 +1 한 만큼으로 길이를 선언한다. substring(startIndex,endIndex)을 활용해 문제를 해결할 예정인데 시작점과 끝점을 설정해주어야한다. 시작점은 정수 n+i로 정해져 있기 때문에 간단하게 설정할 수 있다. 하지만 마지막점은 문자열 my_str이 정수 n과 정확히 나눠지는경우와 그렇지 않는 경우가 있기 때문에 두가지 경우를 생각해서 endIndex를 설정해서 int end로 선언한다 그 후 substring을 .. 2023. 3. 21.