문자열 answer를 int인 정수 형태로 강제 타입 변환을 한다.
자연수를 문자열 형태로 강제 타입 변환을 한다. answer 리스트에 append를 이용해서 정수형태로 하나씩 넣어준다. reverse()를 이용해서 내림차순으로 정렬한다.
arr 리스트의 길이가 1이 아닐때 min을 통해서 최소값을 찾고 remove를 이용해서 제거한다. arr을 answer에 대입하고 리스트이 길이가 1이면 -1을 출력한다.
len을 이용해서 구한 a 리스트의 길이를 n에 대입한다. for문을 이용해서 i부터 n까지 a와 b의 i원소들의 곱한 값을 answer에 더한다.
sqrt(n)을 res에 넣어주고 1로 나눈 나머지가 0이면 제곱근으로 판단한다. 제곱근인 경우 pow()를 이용해서 res+1의 제곱값을 리턴한다. 제곱근이 아니면 -1을 리턴한다.
문자열을 정수형태의 리스트로 바꿔준다. sort (reverse = True)를 이용해서 내림차순으로 정렬한다. join으로 리스트를 합치고 정수형태로 반환한다.
for문을 이용해서 0부터 9까지 not in 연산을 통해 리스트 존재 여부를 파악한다. 리스트의 존재하지 않는 숫자는 answer에 더해준다.
단어 구분을 위해 cnt 변수를 선언한다. 공백일 때 그대로 공백을 answer에 더하고 공백 후는 새로운 단어가 나오므로 0으로 초기화 짝수일 때 upper()를 이용해서 대문자로 만들고 홀수일 때 lower()를 이용해서 소문자로 만든다.
자연수 n을 i로 나누었을 때 나머지가 1이 되면 즉시 종료하고 i를 answer에 대입해서 반환한다.
입력받은 숫자를 split을 이용해 띄어쓰기를 기준으로 나누고 map을 이용해서 int로 변환해서 a,b로 반환한다. 행의 개수만큼 for문을 반복해서 a만큼 "*"을 찍는다.
1부터 count까지 sum에 price와 횟수만큼 곱해준 값을 더한다. money에서 sum을 빼준다. money가 양수면 0을 출력하고 음수면 abs로 절대값을 해줘서 리턴한다.
문제에 필요한 itertools와 math 라이브러리를 사용한다. nums에서 3개로 이루어진 조합을 찾는다. sum_list에 각 조합을 더한 값들을 넣어준다. isprime()이라는 소수를 판단하는 함수를 만들고 sum_list에서 isprime()을 적용해서 소수
각 숫자마다 딕셔러니를 적용한다. i부터 number까지 숫자가 존재하면 replace를 통해서 대체를 해주고 int형으로 변환해서 반환한다.
answer에 초기값을 arr의 첫 인덱스를 넣어준다. 2번째 인덱스부터 마지막까지 비교해서 연속적으로 똑같지 않으면 append를 이용해서 answer에 삽입한다.
a<b일 경우 sum을 이용해서 a부터 b까지의 합을 구한다. b>a일 경우 sum일 이용해서 b부터 a까지의 합을 구한다.
최대공약수는 n과 m중 min을 이용해서 최소값을 구하고 최소값부터 0까지 for문을 이용해서 n%i==0과 m%i==0이 참이면 append를 이용해서 answer 리스트에 i를 넣어준다. 최소공배수는 n과 m중 max를 이용해서 최대값을 구하고 최대값부터 n*m까지
문자열 s를 리스트 형태로 강제 타입 변환을 한다. i가 공백이라면 그대로 공백을 answer에 넣어준다. isupper()를 이용해서 대문자를 판단하고 맞다면 ord(i)+n의 값이 Z의 아스키코드인 90을 초과하면 26을 빼주고 그렇지 않으면 그대로 더한 값을 ch
n이 0일때까지 while문을 반복한다. ans 문자열에 n을 3으로 나누었을 때 나머지를 ans에 더해주고 n은 다시 3으로 나눠준다. Integer.parseInt를 통해서 ans 3진법을 10진법으로 반환한다.
i는 1부터 n까지 for문을 통해서 i%2==0 값이 짝수면 "박"을 더해주고 홀수면 "수"를 더한다.
문자열 s를 toCharArray()를 통해 문자열을 char형 배열로 바꿔준다. pcount: p의 개수를 나타내는 변수 / ycount: y의 개수를 나타내는 변수 str의 길이까지 배열의 원소가 p또는 P일경우 pcount를 증가시킨다. str의 길이까지 배열의
각 요일들을 초기화한 문자열 배열 week를 만든다. 1~12월의 마지막 일을 초기화한 정수형 배열 endDay를 만든다. 0부터 a-1월까지 res에 각 마지막 일수를 더하고 b일을 더한다. res를 7로 나누었을 땓의 나머지 값의 week 인덱스 값을 answer에
for문으로 seoul 배열의 길이까지 equals 메소드를 통해 "Kim"과 일치한다면 일치하는 인덱스 위치에 김서방이 있다고 알려준다.
arr의 i가 divisor를 나눈 나머지가 0이면 answer에 i를 더해준다. 만약 answer의 길이가 0이면 append를 통해서 -1을 넣어준다. sort()를 이용해서 answer를 정렬하고 반환한다.
for문으로 absolutes의 길이까지 signs[i]인 경우 answer에 absolutes[i]를 더한다. False인 경우 answer에 absolutes[i]를 뺀다.
이중 for문으로 left부터 right까지의 수가 1부터 i까지 나눈 나머지가 0이면 cnt를 1 더한다. cnt가 짝수면 i를 answer에 더하고 cnt가 홀수면 i를 answer에서 뺀다.
자연수 x가 0보다 작을 때까지 10으로 나눈 나머지 값을 sum에 더하고 x는 다시 10으로 나눈다. res에 원래 x값을 넣어주고 res%sum == 0 값이 참이면 true 반환 아니면 false를 반환한다.
이중 반복문을 이용하여 arr1 배열의 값과 arr2 배열의 값을 더하여 배열로 만들어준다.
answer 리스트에 0,1을 일단 넣어준다. for문을 이용해서 2부터 n까지 i-1값과 i-2값을 더한 값을 append를 이용해서 answer에 넣어준다. 제일 마지막에 있는 수를 반환한다.
split을 사용해서 phone_number를 하나씩 잘라서 arr 문자열 배열에 넣어준다. i<arr.length-4인 경우 answer에 "*"을 추가하고 맨 뒷 자리 4자리는 각 숫자를 answer에 추가한다.
answer을 arr[0]으로 초기화한다. 최대공약수 메소드 gcd를 활용해서 모든 배열을 돌면서 최소공배수를 구하고, 저장하는 방식으로 진행한다.
문자열 s의 길이가 4혹은 6이면 charAt()을 통해 string형을 char형으로 바꿔서 ch에 대입한다. ch가 0보다 작고 9보다 크면 숫자가 아니므로 false를 반환한다. 문자열의 s의 길이가 4혹은 6이 아니면 false를 반환한다.
단어 구분을 위한 변수 cnt를 만들고 문자열이 공백일 때 그대로 공백을 더한다. 공백을 만나면 cnt 변수는 다시 0으로 초기화한다. cnt=0일때 대문자로 만들어서 answer에 더하고 나머지는 소문자로 answer에 더한다.
이중 반복문으로 1부터 n까지 sum에 j를 더한다. sum이 n과 같으면 answer를 1 더해준다. sum이 n보다 크면 멈춘다.
strings의 길이까지 strings[i]에 strings[i][n]을 맨 앞에다가 더한다. 리스트 strings를 정렬한다. answer에 strings[j][1:]를 append한다.
최대공약수를 구하는 gcd함수를 만들어준다. 사용할 수 있는 칸 = (너비*높이) - (너비+높이-최대공약수(너비,높이)이다.
소수인지를 판단하는 boolean형의 flag 변수를 사용한다. 이중 반복문을 사용해서 i는 2부터 n까지 j는 2부터 i의 제곱근까지 i%j ==0이 참이면 소수가 아니므로 flag에 false를 대입한다. 반복문동안 flag가 true이면 answer를 1 증가시켜
문자열 s를 split을 통해 잘라주고 num 변수의 arr의 길을 대입한다. 문자열의 길이가 홀수이면 가운데 수인 arr[(num-1)/2]를 출력한다. 문자열의 길이가 짝수이면 arr[((num)/2)-1] + arr[(num)/2]를 통해 가운데 두수를 출력한다.
n이 1이면 즉시 종료하게 만든다.n이 1이 될때까지 짝수면 2를 나누고 홀수면 3을 곱하고 1을 더한다.한 번 반복될 때마다 answer가 1이 증가하는데 answer가 500이 되면 즉시 종료하고 -1을 반환한다.문제만 잘 읽으면 누구나 쉽게 풀 수 있는 문제인 것
Integer.bitCount를 이용해서 2진수로 변환한 1의 개수를 구한다.큰 수의 비트 수를 나타내는 bit_cnt를 선언한다.n을 증가시키고 bit_cnt와 원래 수의 1의 개수가 같으면 종료한다.Integer.bitCount라는 메소드를 이 문제를 통해 알게 되
이중 반복문을 통해서 두 개의 수를 더한 것을 sum에 대입한다.indexOf를 통해서 리스트에 sum이 들어있지 않으면 add를 통해 추가한다.get을 통해서 리스트를 가져와서 answer에 넣어준다.Arrays.sort()로 정렬한다.문제만 보면 쉽게 풀 수 있을
공백을 기준으로 split으로 분리하고 int형 리스트로 만들어준다. min과 max로 최소값과 최대값을 반환한다.
참가자와 완주자를 정렬한다.참가자와 완주자를 비교하려면 수가 맞아야 해서 완주자에 append를 이용해서 0을 추가한다.참가자와 완주자의 i번째가 다를 때 answer에 참가자 i번째를 추가한다.처음에는 not in 연산을 통해서 해보았는데 테스트 결과 실패했었다. 그
올바른 괄호인지 판단할 리스트 arr를 만들어준다.현재 괄호가 '('이면 arr에 넣어주고 arr이 빈 스택이면 올바르지 않으므로 반복문을 탈출한다.arr이 빈 스택이 아니라면 맨 끝에 있는 '('를 빼준다.반복문을 수행 후 arr이 빈 스택이 아니면 false를 반환
people 배열을 정렬하고 사람의 위치를 알려주기 위해 idx 변수를 선언한다.몸무게가 가장 무거운 사람부터 최소+최대 몸무게가 limit보다 작거나 같을 때 idx랑 answer를 증가시킨다.그렇지 않은 경우 answer만 증가하고 idx 위치는 그대로 냅둔다.문제
이중 반복문으로 데이터를 잘라서 slice 배열에 넣어준다slice 배열을 오름차순으로 정렬하고 answer에 k번째 수를 정답 배열에 넣어준다.최근에 풀었던 문제들 중에서 난이도가 꽤 어려웠다. 데이터를 추출하는 알고리즘을 짜는 부분에서 시간이 꽤 걸렸던 것 같다.
1번,2번,3번 수포자들의 찍는 방식을 각각 배열에 넣어준다.1번 수포자는 5번씩, 2번 수포자는 8번씩, 3번 수포자는 10번씩 찍는 방식을 반복한다.최대값을 구하고 최대값이랑 같으면 수포자들의 점수에 add를 이용해서 추가한다.초반에는 지문이 생각보다 길어서 어떻게
스택에 원소가 존재하고 마지막 원소가 순회하는 i보다 작고 k가 0보다 크면 pop을 이용해서 마지막 원소를 빼고 k를 1줄인다. while문이 종료하면 append로 스택에 순회하는 i를 추가한다. k가 0이 아니면 k개수를 뺀 나머지를 스택에 저장한다. join을
n에 A의 길이를 대입한다.A를 오름차순으로 정렬하고, B는 내림차순으로 정렬한다.A와 B의 i원소들의 곱한 값을 answer에 더한다.레벨2에 있는 문제고 지문이 생각보다 길어서 걱정을 했는데 한 쪽 배열은 최대값 순서대로 다른 쪽 배열은 최소값 순서대로 곱해서 더했
numbers 배열에 4,1,2를 넣어준다.n이 0보다 클때까지 while문을 돌려 numbers에서 3으로 나눈 나머지에 answer를 연결한다.n은 1을 빼고 3으로 나눠준다.어떤 방식으로 접근할지 생각해보다가 3과 관련해서 나누고 나머지를 이용하는 것을 깨닫게 되
맞춘 번호 변수(match)와 알아 볼 수 없는 번호(zero)를 선언한다.로또 번호가 0이면 zero가 증가하고 로또 번호와 당첨 번호를 비교했을 때 맞춘 번호가 있으면 match가 증가한다.match+zero 값이 1보다크면 7-(match+zero) 값을, 그렇지
잃어버린 학생 배열과 여분의 옷을 가진 학생 배열을 정렬한다.여벌의 체육복을 가져온 학생이 도난당한 경우를 생각해서 처리한다.잃어버린 사람에게 체육복을 빌려 줄 때 앞 뒤 번호만 빌려줄 수 있도록 처리한다.초반에는 순조롭게 풀고 있다고 생각을 했는데 여벌의 체육복을 가
1단계는 toLowerCase()를 통해서 소문자로 치환해준다. 2단계는 replaceAll()를 통해서 필요한 문자들을 제외한 것들을 제거한다.3단계는 contains()로 ".."이 있는지 확인하고 replace()를 통해서 치환해준다.4단계는 마침표가 처음일 때와