파이썬으로 풀었던 문제이기에 로직을 생각하는 것은 어렵지 않았다. 다만 프로그래머스 알고리즘을 자바로 풀어보는 첫 문제여서 구현이 생각보다 어려웠다.n+1만큼 배열을 초기화 해준다.lost는 -1 reserve 는 1 reserve인데 도난당한 학생는 0으로 구분한다.
정수 n,m이 입력값으로 주어질 때별을 사용하여 가로가 n 세로가 m인 직사각형 별을 찍어라.기본적인 반복문 문제이기에 따로 설명은 x
자연수 n을 10으로 나눈 몫과 나머지를 활용한다.자연수 n이 10보다 작을 경우를 예외처리 해준다.n이 10보다 작을경우는 한자릿 수이기 때문에 바로 리턴을해주고10보다 크거나 같을 경우는 반복문으로 몫이 10보다 작을때 까지 반복해준다.
정수 n을 문자열로 바꾸고 뒤집기뒤집은 문자열을 int\[]형식으로 형변환하여 넣어주기리턴.굉장히 머리아픈 문제였다.파이썬 알고리즘만 풀다보니 자바의 형변환은 정말 유연성이 없다고 느낀다.String배열로 정답을 만들어놓고 ex) "5","4","3","2","1" i
정수 n을 각 자리를 분할하여 리스트에 저장 리스트를 오름차순리스트에 있는 문자를 하나씩 더하기 append사용내림차순을 진행하고 형변환 시키기.long타입으로 주어진 정수 n을 String\[]형식으로 변환하여 저장하는데 split을 사용하여 각각 숫자를 떨어뜨려서
n의 제곱근이 있는지 찾기 있다면 x+1의 제곱을 리턴 없다면 -1리턴 자바의 메소드 활용하기정수 n이 양의 정수 x의 제곱인지 아닌지 판별하는 문제이다.n의 범위가 매우 크기 때문에 제곱근을 판별할 수 있는 자바 메소드를 활용해야한다. 제곱근이란? a의 제곱근이라
배열이 비었을 경우 혹은 1개만 있을 경우의 예외처리를 해준다.가장 작은 수를 찾는다.가장 작은 수를 제외한 나머지를 배열로 만들어 리턴자바의 ArrayList나 Strem을 사용하여 코드를 줄일 수 있지만 내장함수를 사용하기 이전에 기본적인 코드의 연산을 이해하기 위
짝수인지 아닌지 판별 후 리턴향상된 풀이에선 문자를 할당하지 않는다. 내 코드도 조금씩 향상되길 빌며
최대공약수를 구한다.최대공약수를 가지고 최소공배수를 구한다.유클리드 호제법을 이용한다.유클리드 호제법은 역사가 깊은 수학공식 중 하나로 최대공약수와 최소공배수를 구할 수 있는 공식이다.유클리드 호제법두 양의 정수 a,b (a>b)에 대하여 a = bq + r ( 0 &
1\. 반복 수를 세는 변수 cnt를 할당2\. 조건에 맞추어 while문으로 반복3\. cnt가 500일때 처리해주기어디선가 자꾸 오류가 난다. wihle문과 for문을 번갈아 시도해보았지만 실패..로직 자체의 문제인듯 싶다.두번째 시도int타입으로 문제를 시도하니
문제 설명정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.제한사항arr은 길이 1 이상, 100 이하인 배열입니다.arr의 원소는 -10,000 이상 10,000 이하인 정수입니다.입출력 예arr return1,2,3,4
문제 설명양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution
함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.제한 조건x는 -10000000 이상, 10000000
행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요.제한 조건행렬 arr1, arr2의 행과 열의 길이는 5
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 \*으로 가린 문자열을 리턴하는 함수, solution을 완성해주
String\[]형태로 각 단어들을 담기각 단어들을 다시 각 문자로 담기포문을 돌며 문자의 인덱스를 확인하며 대문자 혹은 소문자로 치환문자를 단어로 합치고 다시 단어를 문장으로 합친다.첫번째 시도???????? 무슨 이상한 언어가 나왔다. 띄어쓰기는 잘 되었지만 문자는
약수는 어떠한 정수 n에 대하여 나누어 떨어지는 수이다.약수들을 모두 더해서 리턴비교적 간단한 문제이다. 포인트 --> n % i ==0 // n 나누기 (1~n)이 나누어 떨이진다면 그 수는 약수이므로 값을 더해 리턴해준다.
문자열 s를 문자로 나누기나눈 문자를 ASCII코드를 활용하여 n과 더해 변환z에서 넘어가게되면 a로 변환시키기문자를 문자열로 더해주기 문자 끼리의 덧셈이 반복적으로 일어나므로 StringBuilder 사용반복문으로 s의 길이 만큼 반복시키면서 문자열을 char로 하나
integer형으로 변환 시켜준다.
짝수는 수박 홀수는 수1일때 예외처리먼저 n이 1일때 "수"만 출력하는 예외를 처리해준다.그리고 짝수일때는 수박을 n을 2로 나눈 몫만큼 반복해주고홀수일때는 뒤에 +"수"를 붙여준다.
약수를 통해 약수가 3이상인 수들을 제거하며 구할 수 있다.1번의 방법은 n이 커지면 커질 수록 시간이 많이 소요된다.에라토스테네스의 체를 사용한다.에라토스테네스의 체는 각 수의 배수들은 소수가 될 수 없다는 것을 이용하여 수의 모든 배수들을 배제하고, 수를 증가시키고
1\. String배열을 돌며 kim을 찾는다2\. 찾은 kim의 인덱스 번호를 저장3\. 리턴.String 배열 seoul안에서 Kim을 찾는다. kim일때 i값을 idx에 넣어주고, 반복문종료문자열 ans에 더해준다.내부 라이브러리를 활용하여 indexOf로 찾는
문자열s의 길이확인문자열을 char로 바꾸어 숫자인지 아닌지 확인기본값을 true로 지정하고 문자열의 길이를 확인한다. 길이가 맞다면 if문으로 들어가 문자열을 char로 바꾸어서 숫자인지 아닌지 확인하고 숫자가 아니라면 false로 바꿔준다.마지막 else ans =
1.String s를 String\[]에 단어 하나씩 집어넣는다.2\. 라이브러리 Array로 정렬 시켜준다.3\. Stringbuilder를 사용해 오름차순된 String\[]값들을 더해준다.4\. reverse()를 사용해 내림차순으로 리턴한다.Array라이브러리를
문제설명 생각하기 문자열 s를 String[]로 만들기 y의 개수와 p의 개수를 세는 변수 2개 만들기 for문으로 String[]을 돌면서 p와 y의 개수를 세기 p와 y의개수를 비교하여 리턴 내 풀이 이 문제에서 charAt으로 문자를 비교하는 방법도 있지만
a와 b가 같을 때 리턴해주면서 예외를 먼저 없애주기a와 b중에 작은 수와 큰 수를 구하기for문을 돌며 작은수부터 큰수까지 더해주기함수가 시작하자마자 if문으로 a==b조건을 걸어주어 첫번째 예외를 없애주었다.그리고 Math.max와 Math.min 라이브러리로 큰
strings 인덱스 n의 값을 뽑아 다른 하나의 리스트에 오름차순으로 저장한다.저장한 값을 다시 String\[]에 저장하면 끝ArrayList를 하나 만들어준다. 이후에 ArrayList에 문자배열의 i값의 n값 + stringsi값을 더해 기준이되는 문자를 문자열
1\. arr % divisor로 나누어 떨어지는 arr의 원소를 뽑아 list에 담기2\. 나누어 떨어지는 원소가 없다면 -1을 list에 담기3\. list를 정렬4\. list를 int\[]에 담아 리턴ArrayList를 활용하여 list를 만들고 나누어 떨어지는
1\. 배열 arr의 원소를 ArrayList인 list에 넣어 하나씩 비교한다.2\. list에 배열 arr0을 넣어주고 비교시작3\. 만약 list의 마지막 값이 arr의 원소와 같다면 패스 다르면 리스트에 추가4\. list를 int\[]에 담아주기먼저 Integ
1\. 이프문으로 s가 짝수인지 홀수인지 구분한다.2\. substring으로 구분된 문자열을 리턴값에 맞게 리턴해준다.문자열 s가 짝수라면 substring(a,b)를 사용해 ans에 더해준다.substring(a,b)는 a부터 b이전까지를 의미한다.
특수문자 , 문자, 숫자 순으로 입력 받기 Math.pow 사용하기4개의 int형 배열 만들기조건이 많기 때문에 하나하나 살펴보면서 구현해야한다. 첫번째 시도엔 아예 실패했고, 두번째 시도에 방향을 잡았다. int3이 아닌 int4를 준 이유는 영어문자 'S,D,T'
10진수를 2진수로 바꾸는 것결과는?어째서인지 오류가 난다. 그것도 런타임 에러 이유를 찾지 못했다..아시는분은 댓글로 알려주시면 감사하겠습니다.다른 분의 풀이를 보자마자 나는 충격먹어버렸다 ..ㅋㅋㅋㅋ이...이게뭐야 비ㅣ트연산자!! 그랬다.. 카카오는 기초 중의 기초
1\. 반복문을 돌며 price를 n배 해준다.2\. 조건문으로 내가 가진 돈보다 비용이 더 드는지 확인기본적인 연산 문제이기에 설명은 생략.
1\. 가로와 세로길이중 큰것과 작은것을 구분해서 저장2\. 구한 가로길이와 세로길이가 이전의 길이와 비교했을 때 큰지아닌지 구분.3\. 곱셈먼저 가로와 세로를 할당하고 비교할 max와 min값을 할당한다.반복문으로 들어가 sizes2차원배열에서 size\[]를 뽑아
조건에 따라 n나누기 x가 1인 수를 구한다.2.리턴기본적인 연산구현이기에 설명은 생략.
2016년은 윤년이다. 윤년 2월은 29일까지 있다.days 변수에 날짜 b를 받는다.if문으로 만약 원하는 날이 1월이 아니면 반복문을 실행. 1월이라면 패스한다. 반복문 안에서 윤년의 2월은 29일까지 있으므로 +294월 6월 9월 11월은 +30 나머지는 +31을
1\. numbers인덱스 배열에서 이중 포문을 돌리며 0, 1~N -> 1, 2~N 이런식으로 끝까지 반복하며 수를더한다.2\. ArrayList를 사용하여 list에 중복이 아닌 수를 추가해준다.3\. 정렬4\. ArrayList를 int\[]로 변환먼저 Array
예산으로 가능한 많은 부서를 지원하려면 금액이 가장 작은 부서순서대로 지원해주기.int\[]을 Arrays.sort로 정렬시킨다.반복문을 돌면서 예산이 지원금액과 같거나 크다면 예산 = 예산-지원금액 후 ans를 증가시킨다.
사실 첫번째로 문제를 보고 Math.pow를 사용하여 코드가 간결하지 못했다. 물론 문제를 풀지도 못했고 한시간 정도를 고민하고 고민하다 다른 사람의 코드를 보았다.문제를 보고 너무 복잡하게 생각을 해서인지 3진법으로 바꾸는 기본을 까먹고 있었다.3진법은 수를 3으로나
1\. left부터 right까지 약수의 개수를 구해가며 반복2\. 개수가 짝수면 더하고 홀수면 빼자개수를 세는 변수 cnt를 주어 반복문안에서 약수가 있을 때마다 더해주었다.cnt의 개수가 짝수면 더하고 홀수면 빼준다.이후 cnt =0 으로 초기화제곱수인경우 약수의
폰켓몬의 종류를 정렬정렬한 배열을 탐색하며 종류를 더해감길이가 넘어가면 리턴nums의 포켓몬 종류를 저장할 i와 종류의 개수를 저장할 cnt를 변수로 할당하고정렬된 nums를 차례대로 돌며 포켓몬의 종류가 이전에 안나왔던것이라면 cnt++만약 cnt가 N/2와 같아진다
1.수포자들의 찍는방식을 반복시키기.2\. 반복문으로 수포자의 정답개수를 저장3\. 저장된 정답개수를 비교하여 많이맞춘 수포자번호를 출력cnt는 수포자들마다 정답을 찍는 패턴이 다르기때문에 각 패턴의 숫자를 cnt에 담았다.max에 1번수포자,(2번,3번 )을 비교하여
commands의 길이만큼 반복하며 i,j까지 돌며 원소를 뽑기뽑은 원소를 정렬시키기그 중 k번째 수 찾기ArrayList를 사용하여 list에 i번째부터 k까지의 수를 담고 정렬시킨다.그 중 k번째 수를 ans\[]에 담는다.리스트를 초기화시키고 반복
각 다른 3개의 숫자를 더하기반복문으로 진행함수형 프로그래밍 연습하기3개의 숫자를 i,j,k로 만들어준다. num에 i+j+k값을 넣고 sosu(num)함수를 부른다. sosu함수에서 check값을 true로 주고 num이 소수인지 판별하는 반복문을 돌린다. 만약 nu
1\. 반복문으로 ans +=a0\*b0; 을 사용간단한 반복문이기 때문에 설명은 생략.
1\. signs에 값이 true면 +1 ,false면 -1를 absolutes에 곱하여 출력signsi값이 false면 absolutesi\*-1을 해줌으로써 값을 음으로 만들어준 뒤 ans와 더한다.
0부터 9까지의 합은 4545 - numbsers의합이 정답
board에 있는 2차원배열의 순서를 생각하기moves의 움직임에 따라 board의 값을 변경해주기if문으로 예외조건들 처리해주기문제를 풀기 전에 2차원 배열의 형태를 파악해야한다 .처음 문제를 풀때 제대로 파악하지 못하여 1시간을 날렸다.board에 들어있는 배열형태
1,4,7일때 왼손 3,6,9 일때 오른손 그리고 2,5,8,0일때 가까운손 구하기왼손과 오른손을 저장할 변수, 왼손과 오른손의거리를 저장할 변수를 사용하기\*,0 ,문제를 푸는데 오랜시간이 걸렸다. 그래도 끝까지 직접 풀었다는 뿌듯함이 있었다.먼저, lefthand와
replace를 사용하여 문자를 바꿔주기 s.replace("바꿀 문자","바뀌는 문자").s.replace("바꿀 문자","바뀌는 문자")형식으로 뒤에 .을 붙여서 연결하면 사용이 됩니다.
단계별로 요구하는 사항대로 구현하면 되는 구현 문제이다.문제를 푸는데 한시간 반정도 걸렸습니다. LV1의 어렵지 않은 빡구현 문제지만 단계를 지키지 않고 구현을 한 내 탓이라고 생각이 듭니다.. 여러분은 1단계부터 차근차근 구현하세요 ㅠㅠ
실제로 맞은 개수와 0의 개수를 따로 구한다.두개를 더한값이 최고순위 실제로 맞은값이 최저순위가 된다.함수형 코딩으로 문제를 풀어보았습니다. 아무래도 main함수 안에 코드를 전부 넣는것보다 가독성이 좋은 것 같네요.
HashMap과 HashSet을 이용하여 문제를 풀기2022년 카카오 블라인드 코딩테스트 1번 문제입니다. 게시판 이용자들 중에 신고가 누적 된 사람은 게시판 이용을 못하게 되고, 신고한 사람에게 신고결과메일을 보내주게 됩니다. 신고한 사람이 받는 메일의 개수를 구하는
반복문을 사용하여 풀건지 재귀로 풀건지 정하기피보나치 문제는 팩토리얼 문제와 유형이 비슷하기 때문에 재귀함수로 푸는 실수를 하기 쉽습니다.자료구조에 의하면 피보나치 문제는 재귀가 아닌 반복문으로 풀어야 시간적 제약을 적게 받는다고 합니다.팩토리얼은 재귀 피보나치는 반복
문자열에 대한 기본적인 메소드들과 조건을 충족시켜 문자를 바꾸는 문제입니다.문자열의 길이가 200이기 때문에 StringBuilder를 사용합니다.각 문자열의 첫번째를 확인하기위해 int 변수 cnt를 초기화 시키고 활용합니다.문자열 탐색도중 공백을 만난다면 cnt를
깊이우선 탐색을 사용하여 문제풀기dfs 함수를 만들어 순차적으로 +,-를 해주기dfs함수가 끝났을 때 sum == target이라면 ans++해주기
ArrayList를 활용문서(J)를 꺼내기남은 서류들 중 우선순위가 높은 서류를 찾기(J)의 우선순위가 가장 높다면 ans++location이 0이고, J의 우선순위가 가장높다면 return두번째 for문에서 최악의 반복횟수를 생각하여 100!(팩토리얼)인 5050번
ArrayList를 이용해 return값을 저장하기반복문과 조건문을 적절히 사용하기두번째 while문을 빠져나가는 break 조건을 잘못설정해서 outofbound메모리오류가 1시간동안 났다..문제가 풀리지 않을 땐 내 코드를 차분히 다시 읽어보자.ArrayList를
scoville의 길이가 최대 1,000,000이기 때문에 최소값을 바로 찾는 PriorityQueue 최소힙을 사용한다.최소값이 k보다 작을때 반복하며 원소가 하나 남았을땐 -1을 리턴데이터의 크기가 크고 그 중 최소값 2개를 뽑아 더해야하는 문제이므로 우선순위 큐를
phone_book의 문자열을 정렬시킨다.반복문을 이용해 정렬된 문자열을 비교 startsWith사용문자열이 숫자인 배열을 정렬시키면 ex) 119, 120, 123, 129, 130 ... 이기때문에 반복문을 한번만 사용해도 모든 문자열을 비교할 수 있다 .
먼저 들어간 트럭이 먼저 나오기 때문에 Queue를 사용
반복문을 사용하여 풀기주식가격이 떨어질 때 조건을 주기
while 10000번 반복해주기 인용횟수 변수와 모든 논문 횟수 비교 하기