Front-End
프로그래머스 기초트레이닝 21 일차 본문
이제 얼마 안남았습니다 . ㅎㅎ
ㅎㅇㅌ..!
문제 102. qr code
문제 설명
두 정수 q, r과 문자열 code가 주어질 때,
code의 각 인덱스를 q로 나누었을 때 나머지가 r인 위치의 문자를 앞에서부터 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.
입출력 예
q | r | code | result |
3 | 1 | "qjnwezgrpirldywt" | "jerry" |
1 | 0 | "programmers" | "programmers" |
입출력 예 설명
저의 풀이!
메모
조건 : code의 각 인덱스를 q로 나누었을 때 나머지가 r인 인덱스를 앞에서부터 순서대로 이어붙여 만든
문자열을 리턴하면 됐습니다.
반복문을 code만큼 돌리면서 i(인덱스)를 q로 나눴을 때 r인 경우만 answer라는 변수 빈문자열에 추가해줍니다.
그러고 나서 마지막에 answer를 리턴하면 원하는 값을 출력할 수 있습니다.
문제 103. 커피 심부름
문제 설명
팀의 막내인 철수는 아메리카노와 카페 라테만 판매하는 카페에서 팀원들의 커피를 사려고 합니다.
아메리카노와 카페 라테의 가격은 차가운 것과 뜨거운 것 상관없이 각각 4500, 5000원입니다.
각 팀원에게 마실 메뉴를 적어달라고 하였고,
그 중에서 메뉴만 적은 팀원의 것은 차가운 것으로 통일하고 "아무거나"를 적은 팀원의 것은 차가운 아메리카노로 통일하기로 하였습니다.
각 직원이 적은 메뉴가 문자열 배열 order로 주어질 때,
카페에서 결제하게 될 금액을 return 하는 solution 함수를 작성해주세요.
order의 원소는 아래의 것들만 들어오고, 각각의 의미는 다음과 같습니다.
입출력 예
order | result |
["cafelatte", "americanoice", "hotcafelatte", "anything"] | 19000 |
["americanoice", "americano", "iceamericano"] | 13500 |
입출력 예 설명
예제 1번의 입력을 표로 나타내면 다음과 같습니다.
철수는 차가운 아메리카노 2잔, 차가운 카페 라테 1잔, 따뜻한 카페 라테 1잔을 주문하게 되므로 결제 금액은 4500 × 2 + 5000 × 2 = 19000원입니다. 따라서 19000을 return 합니다.
예제 2번의 입력에서는 모든 음료를 차가운 아메리카노로 시키게 됩니다.
따라서 결제 금액은 4500 × 3 = 13500원이고 13500을 return 합니다.
저의 풀이!
메모
문제를 봤을때 조건만 걸어주면된다고 생각이 든다.
일단 총 금액을 더하면서 담아 둘 변수를 하나 만들어둔다.
그리고나서 order를 반복 순회하면서 order[i]에 아메리카노가 들어있는지 확인하고 또는 아무거나의 의미인 anything이 있는지 확인한다. 왜냐면 핫 / 아이스 아메리카노의 가격은 동일하며, 아무거나의 메뉴는 아이스 아메리카노로 통일한다고 했으니,
이 세개의 가격은 4500원으로 통일 할 수 있다.
그래서 이 세가지 경우가 포함된 메뉴인 경우 answer 변수에 4500원 씩 더하게끔하고,
나머지인 경우 핫 / 아이스 라떼 일거니까 5000원씩 더하게끔해서 마지막에
answer를 리턴해주면 된다.
문제 104. 조건에 맞게 수열 변환하기 2
문제 설명
정수 배열 arr가 주어집니다.
arr의 각 원소에 대해 값이 50보다 크거나 같은 짝수라면 2로 나누고, 50보다 작은 홀수라면 2를 곱하고 다시 1을 더합니다.
이러한 작업을 x번 반복한 결과인 배열을 arr(x)라고 표현했을 때, arr(x) = arr(x + 1)인 x가 항상 존재합니다.
이러한 x 중 가장 작은 값을 return 하는 solution 함수를 완성해 주세요.
단, 두 배열에 대한 "="는 두 배열의 크기가 서로 같으며, 같은 인덱스의 원소가 각각 서로 같음을 의미합니다.
입출력 예
arr | result |
[1, 2, 3, 100, 99, 98] | 5 |
입출력 예 설명
저의 풀이!
메모
x번 반복한 결과인 배열 arr(x)라고 표한할 때, => 이 부분에서 몇번 반복을 했는지 알아야 한다는걸 알 수 있다.
그래서 변수 count를 만들어 반복할 때마다 +1을 하도록 코드를 작성해주어야 한다.
원본 배열을 건들지 않고, 배열을 복사하여 새로운 배열로 변화를 줘야한다.
every 메서드는 배열안의 모든 원소가 조건에 맞는지 확인해서 true false 를 내보내준다.
문제 105. 배열 만들기 4
문제 설명
정수 배열 arr가 주어집니다.
arr를 이용해 새로운 배열 stk를 만드려고 합니다.
변수 i를 만들어 초기값을 0으로 설정한 후 i가 arr의 길이보다 작으면 다음 작업을 반복합니다.
만약 stk가 빈 배열이라면 arr[i]를 stk에 추가하고 i에 1을 더합니다.
stk에 원소가 있고, stk의 마지막 원소가 arr[i]보다 작으면 arr[i]를 stk의 뒤에 추가하고 i에 1을 더합니다.
stk에 원소가 있는데 stk의 마지막 원소가 arr[i]보다 크거나 같으면 stk의 마지막 원소를 stk에서 제거합니다.
위 작업을 마친 후 만들어진 stk를 return 하는 solution 함수를 완성해 주세요.
입출력 예
arr | result |
[1, 4, 2, 5, 3] | [1, 2, 3] |
입출력 예 설명
저의 풀이!
메모
조건이 정확히 명시되어 있기 때문에, 문제를 잘 읽고 난 후 풀었습니다.
새로만드는 배열의 원소가 없을 경우, 있다면 마지막 원소가 arr[i]보다 작다면 arr[i]를 새로 만든 배열 뒤에 추가하고,
크거나 같다면 마지막 원소를 제거해야합니다.
이때 제거할 경우 i(반복 횟수)를 -1 을 해줘야합니다.
왜냐하면 입출력 예를 봤을 때 pop()됐을 때는 i가 증감하지않고 그대로 유지되고 있는것을 확인할 수 있습니다.
while문을 통해서도 작성해볼 수 있습니다.
'알고리즘' 카테고리의 다른 글
프로그래머스 기초트레이닝 23일차(마지막!!!) (2) | 2023.11.13 |
---|---|
프로그래머스 기초트레이닝 22일차 (2) | 2023.11.02 |
프로그래머스 기초트레이닝 20일차 (0) | 2023.10.27 |
프로그래머스 기초트레이닝 19일차 (4) | 2023.10.19 |
프로그래머스 기초트레이닝 18일차 (4) | 2023.10.10 |