Level1

prog_134240

## prog_134240

### 문제
- 수웅이가 준비한 음식의 양을 칼로리가 적은 순서대로 나타내는 정수 배열 food가 주어졌을 때, 대회를 위한 음식의 배치를 나타내는 문자열을 return 하는 solution 함수를 완성해주세요.
- 준비한 음식의 수가 홀수 or 남을 경우 짝수개 까지만 표현

### 해결 방법
- i ==0 : 물의 경우 continue
- 1부터 food//2 개의 i 를 answer 에 추가
- 중간에 물 연결
- 마지막 상대편 선수는 문자열을 뒤집어서 연결

https://school.programmers.co.kr/learn/courses/30/lessons/134240

def solution(food):
    answer = ''
    for i in range(len(food)):
        if i ==0:
            continue
        answer += str(i)*(food[i]//2)
    final_answer = answer + "0" + answer[::-1]
    return final_answer
    
    
input_arr = list(map(int,input().split()))
solution(input_arr)
def solution(food):
    answer = ''
    for i,n in enumerate(food[1:]):
        answer += str(i+1) * (n//2)
    return answer + "0" + answer[::-1]

prog_142086

### 문제
- 문자열 s가 주어졌을 때, s의 각 위치마다 자신보다 앞에 나왔으면서, 자신과 가장 가까운 곳에 있는 같은 글자가 어디 있는지 찾는문제
- s="banana" , 최종 결과물은 [-1, -1, -1, 2, 2, 2]

### 해결방법
- s 에서 for 문으로 하나씩 돌면서 s[i] 가 s[:i] 에 있을 때 -> 앞에 동일한 문자가 있을때
- 해당 인덱스에서 s[:i].rfind(s[i])를 빼준 값을 append 해주었다
- 만약에 동일한 문자가 없다면 -1 append

https://school.programmers.co.kr/learn/courses/30/lessons/142086

def solution(s):
    answer = []
    for i in range(len(s)):
        if s[i] in s[:i]: 
            first = s[:i].rfind(s[i])
            # first = s[:i].rindex(s[i])
            answer.append(i -first)
        else:
            answer.append(-1)
    return answer

→ 예외 처리가 필요한 경우 rindex를, 예외를 피하고 싶을 경우 rfind를 사용

다른 풀이


def solution(s):
    answer = []
    dic = dict()
    for i in range(len(s)):
        if s[i] not in dic: #처음 등장하는 문자라면 
            answer.append(-1)
        else:
            answer.append(i - dic[s[i]]) 
            #dict 에는 어차피 가장 마지막의 인덱스 값이 들어갈테니
        dic[s[i]] = i
    return answer

str = input()
solution(str)