제목: 99클럽 코테 스터디 2일차 TIL + 오늘의 학습 키워드 : 문자열
- 오늘의 학습 키워드 : 문자열
- 공부한 내용 본인의 언어로 정리하기
1.len()함수
: len()함수는 주어진 객체의 길이나 크기를 반환하는 함수이다.
주로 문자열, 리스트, 튜플, 딕셔너리 등 다양한 데이터 타입에 사용되어진다.
사용예시
# 사용범
len(객체)
########
# 1. 문자열의 길이
s= "Hello, World!"
print(len(s)) # 출력 : 13
# 2. 리스트의 길이
lst = [1,2,3,4,5]
print(len(lst)) # 출력 : 5
# 3. 튜플의 길이
tup = (1,2,3)
print(len(tup)) # 출력 :3
# 4. 딕셔너리의 길이
d = {'a':1, 'b':2, 'c':3} # a:b 라고 했을 때 a가 key b가 value이다. 길이 측정은 키의 개수
print(len(d)) # 출력 :3 ( 키의 개수)
2. range()함수
: range()함수는 주어진 범위의 숫자를 생성하는 함수이다. 기본적으로 세 가지 인자를 받는다.
* start : 시작 값 (default 0)
* stop : 종료 값( 이 값 포함 X)
* step : 증가 값(default 1)
사용예시
# start : 시작 값 (default 0)
# stop : 종료 값( 이 값 포함 X)
# step : 증가 값(default 1)
range(5) # 0부터 4까지의 숫자를 생성 : 0,1,2,3,4
range(1,5) # 1부터 4까지의 숫자를 생성 : 1,2,3,4
range(1,10,2) # 1부터 9까지의 홀수를 생성 :1,3,5,7,9
3. for - in문
:for문은 시퀀스(리스트, 튜플,문자열 등)의 각 요소에 대해 반복 실행하는 데 사용됩니다.
for문의 형태는 아래와 같다.
사용예시
for 변수 in 시퀸스 :
#반복할 코드
# 1. 리스트 순회
fruits = ['사과', '바나나', '체리']
for fruit in fruits:
print(fruit)
#<결과 출력>
#사과
#바나나
#체리
# 2. 범위 사용
for i in range(3):
print(i)
#<결과 출력>
#0
#1
#2
# 3. 문자열 순회
word = "데브수달"
for letter in word:
print(letter)
#<결과 출력>
데
브
수
달
# 4. 열거형
#enumerate() 함수를 사용하면
#인덱스와 값을 함께 가져올 수 있습니다.
colors = ['빨강', '초록', '파랑']
for index, color in enumerate(colors):
print(index, color)
#<결과 출력>
#0 빨강
#1 초록
#2 파랑
# 5. 중첩 For문
matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in matrix:
for number in row:
print(number, end=' ')
print() # 줄 바꿈
#<결과 출력>
#1 2 3
#4 5 6
#7 8 9
4.subString 부분 문자열
: 함수라고 정의하기보다는 문자열에서 내가 원하는 인덱스 지점을 지정해서 subString을 출력하는 방법이다.
# t를 정의
t ="123422"
# 문자열 t의 0번 인덱스부터
#2번 인덱스 직전까지의 부분 문자열을 의미하는 것.
t[0:2]
#출력 -> '12' <- 0번, 1번 인덱스
# t를 새롭게 정의
t "3141592"
t[0 : 3] # '314'
t[1 : 4] # '141'
t[2 : 5] # '415'
==<문자열의 첫번째는 인덱스 0번부터>==
3 1 4 1 5 9 2
[0][1][2][3][4][5][6]
문자열의 첫 인덱스는 0번부터 시작된다.
문자열 인덱싱에서 시작 인덱스는 포함되지만, 끝 인덱스는 포함되지않는다는 것도 기억할 것.
- 오늘의 회고
오늘의 회고...;;
매일 매일 내가 제대로 파악하지 못한 함수와 구조가 튀어나온다.
아주 아주 기초인데 말이다!
그러기에 항해99클럽...정말 잘 신청했다라는 생각이 들었습니다.
비록 이론강의를 따로 듣지는 못하지만,
문제를 푸는 과정에서 찾아보고 검색하면서
함수들을 알아가는 것만으로도 공부가 되기 때문이네요 ㅠㅠ
감사합니다.
**추가**
델파이에서 dll를 stdcall; external; 'filename.dll' 와 같은 정적으로 호출하는 법을 알았고,
쓰고 싶은 dll이 C기반이라면 위와 같은 방식을 쓰면 되지만,
C기반의 dll은 컴파일러가 어려워서 인터넷상에 나온 프로그램으로도 어느정도 찾아보는 게 한계가 있음을 알았다.
반면에 , C# 에서 쓰는 .NET 기반의 .dll 파일의 구조를 보는 방법으로는
JetBrains의 dotPeek 를 이용하면 dll파일의 메소드 찾아보기에도 구조를 트리형식으로 볼 수 있다는 것을 알게되었다.
추가로 excel로 바코드 생성 QR 생성하는 API 사이트도 알았는데, 아직 제대로 사용해보지를 못했다.
프로그램적으로 엑셀파일 불러오기 및 관련 셀 위치에 해당 함수를 적용하면 인터넷이 되는 곳에서는
QR이 생성되서 엑셀에 표시가 되고 해당 위치의 QR를 이미지로 저장하고
저장한 경로를 프로그램 내 픽쳐스나 이미지라는 컴포넌트에 불러오는 방식으로 어떻게 쓰면 되지 않을까
구상했지만,,, 역시... 우선 엑셀에 QR부터 제대로 실행해보고 순차적으로 해결해야 할 것 같다.
- 어떤 문제가 있었고, 나는 어떤 시도를 했는지
오늘도 문자열에 관련된 문제가 나왔다.
'크기가 작은 부분문자열' 이라는 주제의 문제였고,
def solution( t, p) # <- t, p를 받는다. t, p는 각각 string 타입이지만, 숫자로 이루어진 string형태이다.
요기서 처음에는 부분 문자열이라고해서
for문을 이용해서 문자열에서 원하는 길이만큼
예를 들어서 t[i : i+p.len()] 와 같이해서 p의 길이를 len()으로 "271"이면 문자가 3개니깐 3이 나오고
i를 0부터 시작한다고 하면
t "3141592" 니깐
t[0 : 3] # 314
t[1 : 4] #141
t[2 : 5] # 415
까지는 구할 수 있겠구나는 생각했지만,
range와 문법을 구사할 줄 몰라서 처음에는 틀렸다.
그 이후에는 뤼튼ai에게 적절한 문제에 대한 해답과 방법을 배웠고, 다른 분들의 풀이를 참고했습니다.
- 어떻게 해결했는지
def solution(t, p):
p_length = len(p)
count = 0
# t의 길이에서 p의 길이를 뺀 만큼 반복
for i in range(len(t) - p_length + 1):
# 부분 문자열 추출
substring = t[i:i + p_length]
# 정수로 변환
num = int(substring)
# num이 p보다 작거나 같은지 확인
if num <= int(p):
count += 1
return count
1. p_length 라는 변수는 p의 문자열의 길이를 integer로 반환해줍니다.
ex) p = "1234" p_length = 4 # 만약에 p="4213521" 이면 p_length = 7 이런식으로 반환되서 저장됩니다.
2. count라는 변수를 지정한 이유도 가끔 java 공부 할 때 조건에 충족한 횟수를 체크할 때 쓰는 변수를 썼던 것 같다.
이곳에서도 그렇다.
3. 문제를 보고 위의 주석으로 단 부분처럼 알고리즘을 해석하는 부분은 중요한 것 같다.
요기서부터는 t와 p에 임시의 문자열을 가정해보겠다.
t = "123422" p ="23"
p_length = 2
count = 0
#5
for i in range( (6 - 2)+1 ): # 0~4까지의 숫자를 출력한다. i는 기본 0
substring - t[0:2] # "12" 문자열 t의 0번 인덱스부터 2번 인덱스 직전까지의 부분 문자열을 의미
num = 12 # str형태의 앞에 int를 붙이면 문자열을 정수형 타입으로 데이터 전환이 일어지고 num은 숫자12이다.
12 <= 23 # t의 부분문자열이였던 숫자가 p보다 작기때문에
count = count +1 이기에
0 = 0+1 =1
count는 1이됩니다.
이러한 과정이 반복됩니다.
- 무엇을 새롭게 알았는지
1. 부분 문자열의 s[ a : b] 를 해석하는 방법을 확실히 알았다. 문자 인덱싱은 0부터 시작이고 , b에 오는 숫자 직전까지의 인덱스를 출력하는 것!!
ex) s[2:4] 이면 s문자열의 [2][3] 까지가 출력된다. 이건 이제 확실히 알게되었습니다.
2. for - in : 의 구조에 대해서 배울 수 있었고 , range함수를 주로 사용하게 된다는 것도 알았다.
3. len()함수와 어제 사용한 count() 함수의 차이와 공통점이 궁금해졌다. 무튼 len()함수에 대해서 알았습니다.
- 내일 학습할 것은 무엇인지
어제 마저 작성 못한 유닉스시스템의 문제들을 노트에 정리하고,
C# 비주얼 스튜디오 켜서 한개라도 프로젝트 진행하고 마무리 할 예정이고,
내일은 또 코테 하면서 모르는 함수나 새롭게 알게된 함수나 구조에 대해서 공부 할 예정입니다!!
2024.10.28 - [[공부&수업]/코딩테스트 연습] - 99클럽 코테 스터디 1일차 TIL + 오늘의 학습 키워드 : 문자열(4기|파이썬|비기너)
이전 공부 내용이 궁금하신 분은 저의 1일차 게시물을 확인해주세요!!
제목: 99클럽 코테 스터디 3일차 TIL + 오늘의 학습 키워드 : 문자열 (4) | 2024.10.30 |
---|---|
[PCCP 기출문제] 1번/ 동영상 재생기 -파이썬 (0) | 2024.10.29 |
99클럽 코테 스터디 1일차 TIL + 오늘의 학습 키워드 : 문자열(4기|파이썬|비기너) (7) | 2024.10.28 |
[항해99]코테클럽4기 - 파이썬|비기너 신청완료 (3) | 2024.10.22 |
문자열 출력하기 JavaScript (0) | 2023.10.23 |