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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

여기서 생각해봐야 할 문제는 주어진 숫자만큼 더하다 보면 숫자가 알파벳의 범위를 벗어날 수 있다는 것이다. 만약 결과가 알파벳의 범위를 벗어나면 해당 알파벳의 처음인 a 또는 A로 돌아가야 한다.(소문자z -> 소문자 a, 대문자 Z -> 대문자 A).

 

def solution(s, n):
	s = list(s)
    for i in range(len(s)):
     	if s[i] == ' ' : continue
        corr = ord('A') if s[i].isupper() else ord('a')
        s[i] = chr((ord(s[i]) - corr + n) % 26 + corr)
        
    return ''.join(s)

'자료구조&알고리즘 > Kotlin 활용' 카테고리의 다른 글

프로그래머스 - 짝지어 제거하기(level2)  (1) 2024.09.04
프로그래머스 - 이상한 문자 만들기(level 1)  (1) 2024.08.27
문자열  (0) 2024.08.22
2차원 배열  (2) 2024.08.19
시간 복잡도  (0) 2024.08.16

문자열의 특징

문자열(string)이란 문자(char) 또는 문자들로 구성된 집합을 의미한다. 파이썬에서는 기본적으로 "(큰따옴표)와 '(작은따옴표) 문법을 모두 지원한다. 

 

문자열이란

먼저 컴퓨터가 받아들이는 문자열과 사람이 보는 문자열은 차이가 꽤 크다. 모든 것을 숫자로 이해하는 컴퓨터가 문자를 인식하도록 하려면 '문자를 숫자로 변환하는 과정'을 추가로 거쳐야 하며, 이 과저에서 보통 문자 집합(character set)중 가장 대표적인 유니코드를 사용한다.

 

만약 변수에 문자열로 "Programmers is good"을 할당하면 컴퓨터는 사람이 선언한 문자열을 각 글자에 해당하는 숫자로 인식한다. 그리고 모든 글자에 대한 정보를 한곳에 담아야 하기 때문에 암묵적으로 배열로 선언한다. 기존의 배열처럼 [] 형태로 선언하지는 않지만 엄연히 배열로 취급하며, 배열처럼 사용한다.

 

 

1. 문자열 뒤집기

문자열을 통째로 뒤집는 것은 매우 쉽다. 문자열에 슬라이싱으로 [::-1]을 사용해 역으로 만들면 된다. 

 

2. 아스키 코드 다루기

파이썬에서는 문자를 숫자로 바꿔주는 ord() 함수와 숫자를 문자로 바꿔주는 char() 함수를 제공한다. 이러한 함수들을 사용하여 a에 1을 더하여 b로 만드는 드의 행동을 할 수 있으며, 기본적으로 알파벳 순회 같은 문제에서 자주 등장한다.

 

3. 진법 변경하기

파이썬에서는 기본적으로 자주 사용하는 2진법 bin(), 8진법 oct(), 16진법 hex() 함수를 지원하며, 이 외의 진법은 따로 함수로 구현해야 한다.

 

4. 기준에 맞춰 재정렬하기

알파벳순, 숫자순 등 특정 기준이 주어지면 그 기준으로 문자열을 정렬하거나 추출하는 작업이 필요한 경우, 가장 많이 사용하는 라이브러리는 collections 이며, 단어를 세는 것 이외에도 많은 일을 할 수 있어 여러 방면으로 활용된다.

 

5.  문자열 치환하기

string에 있는 replace() 함수를 사용하면 좋다. 

1차원 배열 + 1차원 배열?

다른 언어에서는 '배열은 한 변수에 데이터 여러 개를 선언할 수 있게 해주는 자료형'이라고 할 것이다. '배열은 연속적으로 데이터를 집어넣을 수 있는 1차원 형식의 자료 구조'라고 정의할 수 있다.

 

배열 안의 배열, 즉 2차원 배열은 어떨까? 2차원 배열은 다음 모습과 같다.

 

data = [[1,2,3],[4,5,6]]

 

1차원 배열을 선언하면 다음과 같이 한 방향으로 연속적인 데이터가 나열된다.

배열 생성 시 할당되는 구조

 

조회하려는 항목의 순서인 N에서 1을 뺀 숫자가 바로 원하는 데이터를 조회할 수 있는 인덱스이다. 여기에 배열을 하나 더 얹어 2차원으로 선언할 경우 다음과 같이 사각형이 된다.

2차원 배열을 직관적으로 나타냈을 때

 

이 배열에서 원하는 값을 찾으려면 1차원 배열과 다르게 '세로 위치 -> 가로 위치' 순으로 조회해야 한다. 세로 방향으로 먼저 행을 고른 다음, 가로 방향으로 열을 고르면 원하는 데이터를 찾을 수 있다.

 

2차원 배열의 가장 큰 핵심은 '그룹'이다. 1차원 배열과 다르게 본격적으로 데이터에 의미를 부여하기 시작하는 구조이며, 이런 정보를 기반으로 새로운 데이터를 구축하거나, 원하는 정보를 얻어내기 위해 조작을 한다. 

그림을 2차원 배열로 시각화한 예시

 

배열을 이미지로 생각하면 더욱 빠르게 정보를 이해할 수 있다.

 

 

+ Recent posts